php 编码遇到的问题 |中国人|两个竖线中间第一个汉子是一个特殊符号。utf-8 gbk 编码转换总是会出现问题?有哪位大拿遇到过这个问题? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?php$str="中国人";echo $str2=mb_convert_encoding($str,"GBK","UTF-8");这个代码保存为 utf8编码的文本文件,然后运行会出现: ?中国人第一个特殊字符已经丢失。问题的场景出现在: web页面用ajax提交数据的时候,ajax默认会对数据进行 encodeURIComponent 编码,encodeURIComponent编码会将字符转成 utf-8,而环境是gbk的,所以需要将字符从 utf-8转成 gbk, 导致特殊符号出现问题。不知道其他兄弟有没有遇到过? 直接用utf-8编码,不转码。文件用utf-8header("content-type:text/html;charset=utf-8");也用utf-8不行么 $str="中国人";这个是什么情况? 是ajax提交上来就这样了? 如果都是utf8 不会遇到这个问题。ajax后提交的内容是 $str="%EE%9F%A7%E4%B8%AD%E5%9B%BD%E4%BA%BA";可以看到这个有 12个字节,每个汉子三个字节,所以已经转成了 utf-8,要想再转成 gbk 就出问题了。 为什么一定要转换成gbk呢?给我个理由先。 那你从DB中拿出数据后先转成正常的再用,encodeURIComponent();//里面的东东正码先是正确的码编,不要在之前已经出错了 <?php$str="%EE%9F%A7%E4%B8%AD%E5%9B%BD%E4%BA%BA";echo $str."=>";$str = mb_convert_encoding(urldecode($str), "gb2312","utf-8");echo $str;echo "<br/>";echo $str."=>";$str = mb_convert_encoding( $str,"utf-8","gb2312");echo urlencode($str);?> %EE%9F%A7%E4%B8%AD%E5%9B%BD%E4%BA%BA=>珑中国人珑中国人=>%E7%8F%91%E4%B8%AD%E5%9B%BD%E4%BA%BA 前后的 urlencode 也不一致了 如果利用ajax就会出现乱码。最好是在php.ini里面进行编码转换,或者在程序段进行转码,两种方法都要做到位! 这个问题我以前遇到过,先转成utf-8,然后ajax提交的结果再转回成gbk就好了 初级程序员应具备哪些本事才能面试不怂。。。 请教一个入门问题 linux下 安装php的问题 高分求解 正则 php 里如何导入存储过程到 mysql 安全的IRC聊天服务器(SSL IRC) 幫我來看看這個語句有錯麽? 欧易亚科技股份有限公司~广州诚聘PHP程序员(数名) 帮我看看代码错误 【PHP求助】通过PHP Curl模拟浏览器远程抓取内容 程序下载下来的图片 打不没有预览 啥原因 在线等 反序列化 SimpleXMLElement Object
$str="中国人";
echo $str2=mb_convert_encoding($str,"GBK","UTF-8");这个代码保存为 utf8编码的文本文件,然后运行会出现: ?中国人第一个特殊字符已经丢失。问题的场景出现在: web页面用ajax提交数据的时候,ajax默认会对数据进行 encodeURIComponent 编码,
encodeURIComponent编码会将字符转成 utf-8,而环境是gbk的,所以需要将字符从 utf-8转成 gbk, 导致特殊符号出现问题。不知道其他兄弟有没有遇到过?
文件用utf-8
header("content-type:text/html;charset=utf-8");也用utf-8不行么
这个是什么情况? 是ajax提交上来就这样了?
ajax后提交的内容是 $str="%EE%9F%A7%E4%B8%AD%E5%9B%BD%E4%BA%BA";可以看到这个有 12个字节,每个汉子三个字节,所以已经转成了 utf-8,要想再转成 gbk 就出问题了。
给我个理由先。
encodeURIComponent();//里面的东东正码先是正确的码编,不要在之前已经出错了
$str="%EE%9F%A7%E4%B8%AD%E5%9B%BD%E4%BA%BA";
echo $str."=>";
$str = mb_convert_encoding(urldecode($str), "gb2312","utf-8");
echo $str;echo "<br/>";
echo $str."=>";
$str = mb_convert_encoding( $str,"utf-8","gb2312");
echo urlencode($str);
?>
珑中国人=>%E7%8F%91%E4%B8%AD%E5%9B%BD%E4%BA%BA