导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
ivvn (奔腾的心)
★☆☆☆☆
-
普通会员
2008/12/24 8:57:57
标题:
取得文件的编码问题,就是取得某文件是UTF8还是ANSI等
浏览:1399
加入我的收藏
楼主:
具我所所知,文件的编码就存在文件的开头几个字节中. 不知道有没有现成的模块能读取文件的字符编码!
----------------------------------------------
-
作者:
ebread (ebread)
★☆☆☆☆
-
盒子活跃会员
2008/12/24 9:20:11
1楼:
是的,通过读取文件头几个字节(BOM),就可以判断编码格式。 具体可参考: .Net与字符编码(理论篇) http://www.cnblogs.com/baoquan/archive/2007/12/04/981721.html Delphi与字符编码(实战篇) http://www.cnblogs.com/baoquan/archive/2008/01/05/1027371.html
----------------------------------------------
The best way to predict the future is to invent it.
作者:
ivvn (奔腾的心)
★☆☆☆☆
-
普通会员
2008/12/24 9:25:50
2楼:
问楼上的 BOM_Utf8 BOM_UTF16_MSB 这些东西在哪个单元中?
----------------------------------------------
-
作者:
egust (欢迎访问 Delphi@smth.org)
★☆☆☆☆
-
普通会员
2008/12/24 10:09:49
3楼:
对于utf-8文件来说,bom不是必要的,因为一般情况下可以通过utf-8的编码规则判断出是否是utf-8编码(但是会有一定程度的误判,比如写满了“通”字的gb-2312编码文件容易被误判成utf-8文件) bom使用的是u+feff字符,该字符被定义为 zero-width no-break space(0宽无空白),用utf-8编码后就是 $EF $BB $BF 三个字节;根据cpu的endian不同,utf-16的bom会编成 little-endian 和 big-endian 两种,对于文件来说 utf-16(le/be) 的bom就是必需的。utf-16 le 的bom是 $FF $EF ,be的是 $EF $FF
----------------------------------------------
cnblogs中我写的关于Delphi的blog,欢迎访问: http://www.cnblogs.com/egust/
作者:
ebread (ebread)
★☆☆☆☆
-
盒子活跃会员
2008/12/24 11:25:26
4楼:
可参考JclUnicode.pas单元 (Delphi2009里面可以直接使用SysUtils.TEncoding类)
----------------------------------------------
The best way to predict the future is to invent it.