如何区别文本是BIG5还是GB?
2007-12-17 11:23
302 查看
关于GB与BIG5码的判别,没有100%可靠的方法。但是从两个编码系统汉字的分布来看,还有可以作一定的判断的。GB码的编码范围是首字节A1-F7,尾字节A1-FE,而且首字节A1-A9是符号区,AA-AF这一段没有定义。BIG5码的编码范围是首字节A1-F9,尾字节分两段,分别是40-7E及A1-FE,首字节A1-A3是符号区,A4-C5是常用汉字区。这样我们可以找到几个依据:1)尾字节40-7E是BIG5码特有的,可以以此来判别,但是现在GBK在这个码区也定义了字符,不过这些汉字的使用频度不高,所以仍然可以作为一条依据,但无法保证100%正确;2)首字节A4-A9在GB中为日文假名、希腊字母、俄文字母和制表符,正常文本中很少出现,AA-AF则根本没有定义,但这个范围却是BIG5码的常用汉字,所以如果文本中频繁出现这个范围的码,也可以认为是BIG5码。尤其是首字节位于AA-AF之间,尾字节位于A1-FE的,几乎100%是BIG5码无疑,因为即使在GBK中,这个范围也是没有定义的。为了提高识别的正确率,最好多种判据同时使用。另外还可以通过分析汉字出现的频率,或查找某些常用的词组来判别。因为做起来比较复杂,就不多说了。首字节C6-D7,尾字节A1-FE在GB中属于一级字库,是常用汉字,而在BIG5中,C6-C7没有明确定义,但通常用来放日文假名和序号,C8-D7属于罕用汉字区。所以如果这个范围的码出现较多,可以判别为GB码。
Trackback:
相关文章推荐
- 如何区别文本是BIG5还是GB?
- 如何区别文本是BIG5还是GB?
- 32位和64位的区别以及如何查看是32位还是64位
- 如何测试文本是ANSI还是UNICODE?
- 简单点的,如何创建使用类,单例还是多New几个,区别在哪儿,性能还是需求
- 测试工作——如何区别一个 App 是 Native App, Web App 还是 Hybrid app?
- 如何区别一个 App 是 Native App, Web App 还是 Hybrid app?
- 类(class)和结构(struct)的区别是什么?它们对性能有影响吗?.NET BCL里有哪些是类(结构),为什么它们不是结构(类)?在自定义类型时,您如何选择是类还是结构?
- PHP字符串单引号和双引号的区别,多文本的如何定义
- (转)类(class)和结构(struct)的区别是什么?它们对性能有影响吗?.NET BCL里有哪些是类(结构),为什么它们不是结构(类)?在自定义类型时,您如何选择是类还是结构?
- canvas画图如何区别是鼠标事件还是触摸事件
- 如何判断文件是文本还是二进制
- 栈和队列的区别,以及如何区分是先进先出还是先进后出?
- 【原创】如何判断文件为文本文件还是二进制文件
- 如何区别黑客工具与病毒
- Android 如何判断CPU是32位还是64位
- vc2008中使用CMFCMenuBar如何动态改变菜单文本
- Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
- 如何选择创业的退出战略?出售还是PO
- 如何查看Linux是32位还是64位