我有一个包含日语和ascii字符的数组。 我试图找出所读的字符是英文字符还是日文字符。
为了解决这个问题我跟着
以上算法工作正常,但在日语的半宽形式例如シ,ァ等情况下失败,因为它只有一个字节。 我怎样才能知道字符是日文还是英文?
**注意:**我尝试过的 我从网上读到,第一个字节将告诉我是否是日语,我在算法的第一步中已经介绍过。但它的半宽不会起作用。
编辑: 我正在解决的问题是我在字符的开头和结尾包含控制字符0X80以识别字符串。 我写了以下内容来确定控制字符的结束。
cntlchar .....(我的角色,可以是日本人)..... cntlchar
if ((buf[*p+1] & 0X80) && (mbMBCS_charWidth(&buf[*p]) == 1))
// end of control characters reached
else
// *p++
英语时效果很好,但是日本半宽不适合。
我该如何处理?
答案 0 :(得分:3)
您的数据必须使用Windows Codepage 932。这是 guess ,但检查代码点会显示您所描述的内容。
代码页显示00
到7F
范围内的字符是"英语" (更好的描述是" 7位ASCII"),81
到9F
和E0
到FF
范围内的字符是第一个字节多字节代码,A1
和DF
之间的所有内容都是半角假名字符。
答案 1 :(得分:0)
对于单个字节,这是不切实际的。对于较大的数据集,您可以对字节进行统计分析,并查看它是否与已知的英语或日语模式匹配。例如,元音在英文文本中非常常见,但不同的日文字母具有相似的频率模式。
如果您的数据包含重音字符,事情会比测试位更复杂。
如果您正在处理Shift-JIS数据和Windows-1252编码文本,理想情况下您只需将其重新映射为UTF-8。没有标准的方法来识别文本文件中的文本编码,尽管像MIME这样的东西可以帮助在外部添加元数据。