| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3579 人关注过本帖
标题:再次探讨判断文本文件编码格式的问题
取消只看楼主 加入收藏
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:989
专家分:4966
注 册:2013-2-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
再次探讨判断文本文件编码格式的问题
背景介绍:
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)
搜索更多相关主题的帖子: 格式 判断 编码 文本文件 办法 
2020-06-18 11:00
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:989
专家分:4966
注 册:2013-2-16
收藏
得分:0 
回复 2楼 sdta
Unicode示例.7z (245 Bytes)
Utf8WithoutBom示例.7z (2.66 MB)
  重新用7Z 格式压缩了.
2020-06-18 16:11
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:989
专家分:4966
注 册:2013-2-16
收藏
得分:0 
回复 8楼 吹水佬
是的,同意你的观点.如果是我自己的程序生成的TXT,一定不让他有各种格式.
但是我们收集客户上传的TXT,他们生成的格式各种都有,
我们没办法去要求客户一定用或者不用哪种格式,
甚至,一般的用户连什么叫ANSI,什么叫UTF-8,什么叫Unicode都没有听说过,
这样就更谈不上去要求他了,所以,只能是我们适应他,尽可能的去解读他们发来的格式.

这个问题我通过调用第3方的DLL已经解决,本帖只是探讨在VFP这个框架下:
判断多数文件都没有问题,就是不带BOM的UTF8,和部分Unicode文档无法判定.
2020-06-19 12:05
快速回复:再次探讨判断文本文件编码格式的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013832 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved