• 10200阅读
  • 8回复

请问怎么获取文档的编码格式?谢谢~ [复制链接]

上一主题 下一主题
离线ortejia
 

只看楼主 倒序阅读 楼主  发表于: 2010-03-30
    最近做的模块要求对各种语言的文档进行解析,然后显示,但是会出现乱码的现象,应该是编码支持的问题。我想先把文档的内容按它本身的编码格式提取出来,然后显示,应该不会有乱码的问题了。找了很久都不知道怎么获取原来文档的编码格式,高手请指点,谢谢啦~~~~
离线ortejia

只看该作者 1楼 发表于: 2010-03-30
在线等待哦,呵呵~~~
离线xtfllbl

只看该作者 2楼 发表于: 2010-03-30
不知道
可不可以一开始就全部转换成utf8,然后再读取,如何识别编码还真不知道,期待楼下解答
关注中
上海欢迎您
离线dbzhang800

只看该作者 3楼 发表于: 2010-03-30
如果纯文本的话,这种问题基本上无解

尽管如此,还是很多人进行了很多努力,比如

http://www.mozilla.org/projects/intl/chardet.html
http://chsdet.sourceforge.net/
http://jchardet.sourceforge.net/
离线yangfanxing
只看该作者 4楼 发表于: 2010-03-30
如果是txt的话看文件里边有头信息~
比如:同是写“12345”五个字符
Unicode bigen dian,读入头两个字节是FE FF;文件大小是5*2+2,编码为 FE FF 31 00 32 00 33 00 34 00 35 00
相反Unicode,读入头两个字节是FF FE(00 31 00 32 。。。);
而ANSI无头信息,编码为31 32 33 34 35。文件共5个字节大小。
又如UTF-8有信息头:EF BB BF,接下来5个字节是 31 32 33 34 35,文件共8个字节。

以上供参考!
其它的编码方式也可以由此分析,读出头几个字符,跟FE FF 、FF FE、EF BB BF比较,并结合文件大小,得到txt的编码方式。
[ 此帖被yangfanxing在2010-03-30 21:33重新编辑 ]
PHPWind好恶心。。。不想看这种界面。。。
离线dbzhang800

只看该作者 5楼 发表于: 2010-03-30
引用第4楼yangfanxing于2010-03-30 15:58发表的  :
如果是txt的话看文件里边有头信息~
比如:同是写“12345”五个字符
Unicode bigen dian,读入头两个字节是FE FF;文件大小是5*2+2,编码为 FE FF 31 00 32 00 33 00 34 00 35 00
相反Unicode,读入头两个字节是FE FF (00 31 00 32 。。。);
而ANSI无头信息,编码为31 32 33 34 35。文件共5个字节大小。
.......


BOM(byte order mark)不是用在这个场合的。

在unicode中,utf-16 和 utf-32 都大于1个字节,有字节序的问题,所以引入了 BOM

而 utf-8, utf-16be,utf-16le,utf-32be 和 utf32le 字节序时确定的,不存在 BOM 的问题(但windows下,比如记事本,即使utf8 都会在文件头部加类似BOM的东西,当遇到这种文件时就特殊处理了)

结合楼主的问题,他关心的估计是 ANSI、Latin-1、GBK、BIG5、UTF-8...等这些编码的自动探测,这个问题是无法完美解决的。
离线ortejia

只看该作者 6楼 发表于: 2010-03-31
对,楼上说的正是我的本意,因为文档不一定是什么txt,也可能是lrc,tsr之类的,所以我想先探测一下文档的编码格式是ANSI、Latin-1、GBK、BIG5、UTF-8...等这些编码的哪种。因为各种语言的编码格式不太一样,所以提取时我只需要知道是哪种编码格式就行了,不需要了解是哪种语言。而且前提是探测时不能破坏原文件的内容。还是非常感谢各位的热心哈~
离线benbenmajia

只看该作者 7楼 发表于: 2010-03-31
蹲点等待,不知道
安然.....
离线forcrystal

只看该作者 8楼 发表于: 2015-12-23
回 dbzhang800 的帖子
dbzhang800:BOM(byte order mark)不是用在这个场合的。
在unicode中,utf-16 和 utf-32 都大于1个字节,有字节序的问题,所以引入了 BOM
....... (2010-03-30 16:42) 

版主,我和4楼理解是一样的。能讲解再详细一些吗?或者给几个相关网页链接,我自己去看也行。感谢
快速回复
限100 字节
 
上一个 下一个