再次探讨判断文本文件编码格式的问题
背景介绍:1、读入一段文本,由于VFP对ANSI支持较好,那么读入前,我们需要有一个机制,预先判断文本文件的编码格式,
如果是ANSI编码,则直接把文件读入到界面;否则,如果不是ANSI编码,则弹出警告框,提示用户先转换编码格式再读入。
2、本人已经看过十豆三老师的文章,比如这个:http://blog.
问题:
目前找到的办法(指VFP下的办法,也包括十豆三老师的办法),都存在一个缺陷,即部分文件格式,会误判断。
比如十豆三老师 判断编码格式的代码:
程序代码:
*--文本文件的编码格式手动查看方法: lcFileName='C:/A.txt' &&文本文件名 lcStr=Filetostr(lcFileName) lcStrType=Createbinary(Substr(lcStr,1,2)) Do Case Case lcStrType=0hEFBB &&VFP6.0不支持此种方式,此实列是在VFP9.0+SP2下测试的。 lcCode='UTF-8' Case lcStrType=0hFFFE lcCode='Unicode' Case lcStrType=0hFEFF lcCode='Unicode big endian' Otherwise lcCode='ANSI' Endcase ?'此文本的编码格式为:',lcCode
举例说明:
附上2个附件,这些附件,明明不是ANSI格式,但是用以上方法,都判断失误。
所以,各位有没有办法能准确的判断?(用VFP代码实现)
目前我自己采用的办法是:
用写了一个DLL,这个DLL倒是可以准确判断文件的编码格式,然后,我在VFP中,调用这个DLL。
有点绕,但是好在也能解决问题。
问题是解决了,但是想探讨一下用纯VFP手段有没有办法做到?
Utf8WithoutBom示例.rar
(3 MB)
Unicode示例.rar
(228 Bytes)