@ZEAL Blog·厉
WWW Zeal Blog
We stand alone,
TOGETHER.

中文字符编码格式判断

Posted by zeal on 2006-10-12 00:47 , 3747 characters |  + 0 - 0   English
转载请保留本行原始出处声明信息 : http://www.zeali.net/entry/444 MaDe1nZEAL
一年前在日志里面贴了一套繁简体(GB<=>Big5)字符串转化的JAVA方式实现的源代码,最近有朋友在问如何在转化的过程中先判断原始字符的编码格式。在此提供一个简单的 java class 以供参考。

一般来说要对字符编码格式进行判断就是根据各种编码两个字节的起止范围作判断,如果符合起止范围就认为是某种字符编码。但理论上来说不同的字符编码有可能会采用同样的字节范围,所以这种方法并不能完全把某个双字节字符对应到唯一的一种编码格式上(所以说如果大家都用 utf-8 ,整个世界就清静了)。这种伴随着计算机发展而衍生出来的各种双字节语言字符编码只能是尽量想办法处理,但难有完美解决方案。

CnCharsetChecker.java 源代码:

以上代码依据 MySQL 源代码中对于 GB2312 / GBK / Big5 这几种常见中文编码格式的双字节范围判断改写。你还可以从 MySQL 源码包的 strings/ctype-*.c 系列文件中找到其他语言字符编码的范围定义(当然现在有了 Google Code Search,你不需要去下载整个源码包也可以搜索到所有相关的代码)。

Last Modified on 2007-05-28 14:38
6 条评论:
- sailbefore2006-10-23 10:50
谢谢Zeal 老兄!
- Michael2007-03-14 10:26
换一些其他的字符好像判断不出来哦
这是我的结果:
爱 is true for GB2312;true for GBK,true for BIG5
愛 is false for GB2312;true for GBK,false for BIG5
ぱ is true for GB2312;true for GBK,true for BIG5
- 监控软件 (link) 于 2007-04-24 17:33
字符集有交叉,这样判断肯定是不能完全正确的。
- rock () 于 2007-11-22 09:33
字符集应该是没有交集的吧
按照unicode,每个子字符集都分配在某个特定的段
- zeal (link) verified2007-11-22 11:20
如果大家都用unicode,那这个世界就清净了。可惜目前来说这只是个“空想社会主义”而已。
- Simon Bath () (link) 于 2010-10-15 07:06
thank you, i found this very useful. :)
日志存档
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
本 Blog 原创内容
遵循以下授权:

Creative Commons
(创作共用) CC

署名-非商业性
-相同方式分享
ZEAL Blog 基于
Powered byPivot - 1.24.1: 'Arcee'
Pivot1.24.1
开发
系统部署于
Linode.com
Launched @
2005-04-27
Since 2005.04.27  梦想 就像鸡蛋 要么孵化 要么臭掉RSS Feed (Entries) | About me | Back To Home | @ZEAL | zbird.com | 沪ICP备05024379号