关于古体字查询问题:用 Java 在 MyEclipse 中开发,将一个汉字字符串按字拆分,再分别用拆分出来的字到 MySQL 中做查询。如何正确实现?
的有关信息介绍如下:
我又查阅了下资料,现在我了解到的资料是这样:
Java 5 以前的版本只支持 UCS-2 (UTF16 的子集),每个 code point 只能两个 byte,所以基本不可能容纳生僻字。Java 5 开始支持 UTF16 (每个 code point 两个或四个字节)。但对于不在 Unicode 的 Basic Multilingual Plane(不懂这是什么的先自学 Unicode)里的 code point,要手动加 surrogate halves (不懂的也去学 Unicode) [1]。
现在就分两种情况:
1) 如果这个字存在 Unicode 中,那应该不在 BMP (Basic Multilingual Plane) 里面。按照 [1] 的方法手动加 surrogate halves 试试看。
2) 如果这个字不存在于 Unicode 中,Java 的默认字符串编码方式 UTF16 无法解码了。"王X".length() == 3 说明解码出现异常。要确认所需汉字能够用哪种编码方式编码,再找看看 Java 是否有与此对应的 charset。
如果大部分字属于 Unicode 标准规定的字,只有少数几个是 Unicode 没有的生僻字,可以考虑使用 Unicode 私有位置为这些生僻字编码。如果无法使用 Unicode,则要考虑其他的编码方式。如果你的字符集过大,甚至需要自己定义一个类来容纳超过 64 位长的字符。
古体字真是坑爹……
[1]: http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.1



