Zeal Blog - 泽欧里
  WWW Zeal Blog
梦想 就像鸡蛋
要么孵化 要么臭掉

中文字符编码格式判断

zeal 2006-10-12 00:47 于 JAVA/C++ , 3747 字 |  + 0 - 0   English
Made In Zeal 转载请保留原始链接:http://www.zeali.net/entry/444
标签 ( Tags ):  , 
一年前在日志里面贴了一套繁简体(GB<=>Big5)字符串转化的JAVA方式实现的源代码,最近有朋友在问如何在转化的过程中先判断原始字符的编码格式。在此提供一个简单的 java class 以供参考。

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

CnCharsetChecker.java 源代码:

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

This Entry was Last Modified on 2007-05-28 14:38
引用本文(TrackBack): 此功能无限期关闭ing ... 如有引用请在文中标明出处并提供超链接  
5 条评论:
- sailbefore 于 2006-10-23 10:50
谢谢Zeal 老兄!
- Michael 于 2007-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) verified 于 2007-11-22 11:20
如果大家都用unicode,那这个世界就清净了。可惜目前来说这只是个“空想社会主义”而已。
对于这篇日志您有什么想法?我想听听您的高见。
如果您不是没有思想的机器Spammer,请告诉我 4 + 8 =
然后任选以下两种方式之一告诉我您的身份:
1. 使用您的 OpenID
2. 使用传统留言格式
(必填) 名字
如何称呼您?
(选填) URL
在此填写您的 Blog / Homepage 的地址,我将非常乐于访问
(选填) Email
Email地址将在经过防SPAM处理后显示在页面。如果您不希望公开自己的Email,请略过此栏
并写下您的见解:
(由于需要进行SPAM过滤,如果评论提交速度慢请耐心等待)
记住我?

  如何进行评论                   当有新回复时给我发送邮件通知
除了 <b> 和 <i> 之外,其他的HTML标签都将从您的评论中去除. URL 或 Email 地址会被自动加上链接.
当您点击发表或者预览之后,系统会自动保存您此次评论的内容,以便当网络原因发表失败时直接按Ctrl-V重新粘贴上次评论内容。
注意:快捷键及自动拷贝功能仅对IE浏览器有效。
 里,居也。——《说文》    里,邑也。——《尔雅》。李注:“居之邑也。”沪ICP备05024379号 Back To Home All Links Loading