9
回答
php怎么将未知编码文本转换为UTF-8
科大讯飞通用文字识别100000次/天免费使用。立即申请   

服务器端用php中读取一个文本文件内容,发送给客户端,需要发送UTF-8编码,但是读取的内容的编码不知道。需要先判断文本的编码格式吗?怎么判断?
使用 mb_convert_encoding($text, 'UTF-8','GB2312,UTF-8');这样对GB和UTF-8的没问题,但是其他编码可能还有问题。
另外php手册中有人这样用: iconv('', 'UTF-8', $str); 但是我试了不行。。

有什么比较简单的方法吗?大家指点一下.

另外各种文件编码 在PHP中的表示方式是什么?

举报
leetom
发帖于8年前 9回/12K+阅
共有9个答案 最后回答: 8年前

你最好自己肉眼读一下服务器这段文本,将它放在浏览器里面读,用不同的编码试试,哪个显示正常,就是哪种编码了。

引用来自#3楼“张敏峰”的帖子

你最好自己肉眼读一下服务器这段文本,将它放在浏览器里面读,用不同的编码试试,哪个显示正常,就是哪种编码了。

这样不行。让PHP自动判断编码格式,都转换成UTF-8的。搜到一个帖子,是通过判断文件头来判断编码,但是我觉得应该有更简单的方法。mb_convert_encoding($text, 'UTF-8','GB2312,UTF-8');这个函数基本实现了功能,但是有些编码如Unicode就会乱码 (用记事本保存时可以选,不知道是不是一种编码)。应该把尽量多的编码放到函数第三个参数上就可以吧。

引用来自#5楼“凹凸曼”的帖子

不知道文件头信息里面会不会有文件的编码方式的标记。

utf-8好像有固定的文件头,别的不知道。

引用来自#9楼“dj”的帖子

编码的顺序是很有讲究的,如果编码是ascii的就不要转换

  也就是用 mb_convert_encoding($text, 'UTF-8','ascii,GB2312,gbk,UTF-8');  ?

第三个参数是文本的原编码,检测到与第二个参数相同时就不进行转码了?

顶部