我有一个包含日语和 ascii 字符的数组。我试图找出读取的字符是英文字符还是日文字符。
为了解决这个问题,我遵循
- 读取第一个字节,如果 multicharcterswidth 不等于一个,将指针移动到下一个字节现在一起显示整个两个字节并显示已读取日文字符。
- 如果 multicharcterswidth 等于 1,则显示字节。并显示消息英文已被阅读。
上面的算法工作正常,但在日语半角形式的情况下失败,例如。シ,ァ等,因为它只有一个字节。我怎样才能知道字符是日文还是英文?
**注意:**我尝试从网上读取的第一个字节将告诉它是否是日语,我在算法的第 1 步中已经介绍过。但它不适用于半宽。
编辑:我正在解决的问题我在字符的开头和结尾包含控制字符 0X80 来识别字符串。我写了以下内容来识别控制字符的结尾。
cntlchar .....(我的字符,可以是日语).....cntlchar
if ((buf[*p+1] & 0X80) && (mbMBCS_charWidth(&buf[*p]) == 1))
// end of control characters reached
else
// *p++
它在英语时效果很好,但在日语半角上不起作用。
我该如何处理?