我有一台热敏打印机,它只支持拉丁文以外的繁体中文字符。有没有办法检查,给定Unicode中的CJK字符,它是否是Big-5编码下的有效繁体中文字符?
更新
这是我用来检查String是否具有Unicode CJK的方法。
public static boolean isChineseText(String s) {
for (int i = 0; s != null && s.length() > 0 && i < s.length(); i++) {
char ch = s.charAt(i);
Character.UnicodeBlock block = Character.UnicodeBlock.of(ch);
if (Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS.equals(block)
|| Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
.equals(block)
|| Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
.equals(block)) {
//Here, I want to check if its a Traditional Chinese character under Big-5
return true;
}
}
return false;
}
答案 0 :(得分:0)
您在代码中执行的检查(以及Java本身)使用Unicode(非Big-5)编码来编码繁体中文文本。有关编码之间的转换列表,请参阅this page,或查找this site。
我知道没有简单的方法可以测试中文文本是否为繁体文字。您可以检查字符是否介于0xA140
和0xF9D5
之间(显然是我上面给出的链接的Big 5范围),但Unicode在此范围内也有重叠编码。
另见Differentiating CJK languages (Chinese, Japanese, Korean) in Android