php 编码遇到的问题
时间:2011-09-27
来源:互联网
两个竖线中间第一个汉子是一个特殊符号。
utf-8 gbk 编码转换总是会出现问题?
有哪位大拿遇到过这个问题?
作者: nksurvive 发布时间: 2011-09-27
作者: yagas 发布时间: 2011-09-27
$str="中国人";
echo $str2=mb_convert_encoding($str,"GBK","UTF-8");
这个代码保存为 utf8编码的文本文件,然后运行
会出现: ?中国人
第一个特殊字符已经丢失。
问题的场景出现在: web页面用ajax提交数据的时候,ajax默认会对数据进行 encodeURIComponent 编码,
encodeURIComponent编码会将字符转成 utf-8,
而环境是gbk的,所以需要将字符从 utf-8转成 gbk, 导致特殊符号出现问题。
不知道其他兄弟有没有遇到过?
作者: nksurvive 发布时间: 2011-09-27
文件用utf-8
header("content-type:text/html;charset=utf-8");也用utf-8不行么
作者: ohmygirl 发布时间: 2011-09-27
这个是什么情况? 是ajax提交上来就这样了?
作者: yhkyo 发布时间: 2011-09-27
ajax后提交的内容是 $str="%EE%9F%A7%E4%B8%AD%E5%9B%BD%E4%BA%BA";
可以看到这个有 12个字节,每个汉子三个字节,所以已经转成了 utf-8,
要想再转成 gbk 就出问题了。
作者: nksurvive 发布时间: 2011-09-27
给我个理由先。
作者: ohmygirl 发布时间: 2011-09-27
为什么一定要转换成gbk呢?
给我个理由先。
作者: nksurvive 发布时间: 2011-09-27
encodeURIComponent();//里面的东东正码先是正确的码编,不要在之前已经出错了
作者: yhkyo 发布时间: 2011-09-27
作者: ohmygirl 发布时间: 2011-09-27
$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);
?>
作者: yhkyo 发布时间: 2011-09-27
珑中国人=>%E7%8F%91%E4%B8%AD%E5%9B%BD%E4%BA%BA
作者: yhkyo 发布时间: 2011-09-27
所以错误了
作者: nksurvive 发布时间: 2011-09-27
%EE%9F%A7%E4%B8%AD%E5%9B%BD%E4%BA%BA=>珑中国人
珑中国人=>%E7%8F%91%E4%B8%AD%E5%9B%BD%E4%BA%BA
作者: nksurvive 发布时间: 2011-09-27
作者: yhkyo 发布时间: 2011-09-27
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28