php的字符串的默认编码设置

chanjianjiao5475 2016-11-13 09:45:29

<?php
header("Content-type: text/html; charset=gbk");
$username="sdf";
echo mb_detect_encoding($username);
echo "</br>";
$m="中";
echo mb_detect_encoding($m);
echo "</br>";
$sql="select * from address group by unit";
echo mb_detect_encoding($sql);
echo "</br>";
?>

我已经在头文件设置了默认编码为gbk,可是输出的结果是
ASCII
UTF-8
ASCII。为什么会这样呢,不是应该输出的都是gbk才对吗?求解啊..谢谢啊
...全文
206 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chanjianjiao5475 2016-11-15
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
1、header("Content-type: text/html; charset=gbk"); 只是通知浏览器用什么字符集解释收到的内容,与内容本身无关 2、mb_detect_encoding 在忽略第二、第三个参数时,将按 mb_detect_order 函数指定的顺序进行编码识别 print_r(mb_detect_order()); 你可看到这样的默认结果 Array ( [0] => ASCII [1] => UTF-8 ) 这就是把 gbk 编码的 ,识别成 utf-8 的原因 在备选的字符集中,显然 不是 ASCII,那么只能是 utf-8 了,尽管他不是 3、若只想使用一个参数的 mb_detect_encoding 时,你可以这样做个初始化 mb_detect_order(['ascii', 'utf-8', 'gbk']); print_r(mb_detect_order());
Array
(
    [0] => ASCII
    [1] => UTF-8
    [2] => CP936
)
再 $m="中"; echo mb_detect_encoding($m); 就输出 CP936 了 注:CP936(微软标准)和 GBK(中国国家标准)是查表对应的 由此可见 mb_detect_encoding 是不可靠的(日本人干不了什么好事) 作为补充,mb 扩展增加了 mb_check_encoding 函数 var_dump(mb_check_encoding('中', 'utf-8')); //bool(false) var_dump(mb_check_encoding('中', 'gbk')); //bool(true)
谢谢。。说的很清楚,,我大概明白了
chanjianjiao5475 2016-11-15
  • 打赏
  • 举报
回复
引用 1 楼 fdipzone 的回复:
header("Content-type: text/html; charset=gbk"); 只是设置输出的编码为gbk,但是看输出,你文件的编码是utf-8,你试试把文件另存为GBK再测试。 mb_detect_encoding只是获取你的变量内容的编码,与header没有关系的。
谢谢。。。大概知道了
xuzuning 2016-11-14
  • 打赏
  • 举报
回复
1、header("Content-type: text/html; charset=gbk"); 只是通知浏览器用什么字符集解释收到的内容,与内容本身无关 2、mb_detect_encoding 在忽略第二、第三个参数时,将按 mb_detect_order 函数指定的顺序进行编码识别 print_r(mb_detect_order()); 你可看到这样的默认结果 Array ( [0] => ASCII [1] => UTF-8 ) 这就是把 gbk 编码的 ,识别成 utf-8 的原因 在备选的字符集中,显然 不是 ASCII,那么只能是 utf-8 了,尽管他不是 3、若只想使用一个参数的 mb_detect_encoding 时,你可以这样做个初始化 mb_detect_order(['ascii', 'utf-8', 'gbk']); print_r(mb_detect_order());
Array
(
    [0] => ASCII
    [1] => UTF-8
    [2] => CP936
)
再 $m="中"; echo mb_detect_encoding($m); 就输出 CP936 了 注:CP936(微软标准)和 GBK(中国国家标准)是查表对应的 由此可见 mb_detect_encoding 是不可靠的(日本人干不了什么好事) 作为补充,mb 扩展增加了 mb_check_encoding 函数 var_dump(mb_check_encoding('中', 'utf-8')); //bool(false) var_dump(mb_check_encoding('中', 'gbk')); //bool(true)
傲雪星枫 2016-11-13
  • 打赏
  • 举报
回复
header("Content-type: text/html; charset=gbk"); 只是设置输出的编码为gbk,但是看输出,你文件的编码是utf-8,你试试把文件另存为GBK再测试。 mb_detect_encoding只是获取你的变量内容的编码,与header没有关系的。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧