开发者社区> 问答> 正文

php怎么将未知编码文本转换为UTF-8:报错

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

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

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

展开
收起
kun坤 2020-06-07 17:14:09 888 0
1 条回答
写回答
取消 提交回答
  • 这个很难吧?!

    你说数字1,是属于什么字符集?一切皆有可能。

    ######

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

    ######

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

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

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

    ######

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

    ######

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

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

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

    ######

    回复的时候怎么出来个  {"id":10311,"post":256271957,"user":8876,"post_count":5}  

    红薯看一下问题。

    ######

    mb_convert_encoding用编码列表,一般ascii打头,GB2312、GBK、UTF-8基本够用了。

    ######

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

    ######

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

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

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

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

    2020-06-07 17:14:14
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载