AX中判断字符是否为中文

AX中,当在打印报表并且动态控制字符宽度时,使用char为单位给控件赋宽度,由于中文是英文字符宽度的两倍,所以对于中文,宽度必须是字符的两倍。

如:‘中ABC国’长度为5,但由于‘中国’这两个字是中文,所以实际显示长度是5+2 = 7个char。

 

如何判断字符是否为中文呢?

 

由于从4.0开始,AX就支持中文,AX使用UTF-16支持Unicode编码.(请查阅AX帮助文档Unicode Support相关部分)

 

Unicode中,中日韩字符集的范围是:

 

      2E80-2EFF:CJK 部首补充 (CJK Radicals Supplement)

  2F00-2FDF:康熙字典部首 (Kangxi Radicals)

  2FF0-2FFF:表意文字描述符 (Ideographic Description Characters)

  3000-303F:CJK 符号和标点 (CJK Symbols and Punctuation)

  3040-309F:日文平假名 (Hiragana)

  30A0-30FF:日文片假名 (Katakana)

  3100-312F:注音字母 (Bopomofo)

  3130-318F:朝鲜文兼容字母 (Hangul Compatibility Jamo)

  3190-319F:象形字注释标志 (Kanbun)

  31A0-31BF:注音字母扩展 (Bopomofo Extended)

  31C0-31EF:CJK 笔画 (CJK Strokes)

  31F0-31FF:日文片假名语音扩展 (Katakana Phonetic Extensions)

  3200-32FF:封闭式 CJK 文字和月份 (Enclosed CJK Letters and Months)

  3300-33FF:CJK 兼容 (CJK Compatibility)

  3400-4DBF:CJK 统一表意符号扩展 A (CJK Unified Ideographs Extension A)

  4DC0-4DFF:易经六十四卦符号 (Yijing Hexagrams Symbols)

  4E00-9FBF:CJK 统一表意符号 (CJK Unified Ideographs)

 

所以,使用char2num将字符转换为编码数字,如果编码值落在 0x2380-0x9FBF范围内,就需要给对应的字符多一个char的显示长度。

 

你可能感兴趣的:(AX中判断字符是否为中文)