c++ - 如何测试我的软件是否能正确使用 UTF-16?

标签 c++ testing unicode utf-16

我正在用 C++ 编写一个软件,对于它而言,它能够正确使用 UTF-16 编码非常重要。但是,由于对于大多数用途而言,UTF-16 几乎 是一种固定编码(事实并非如此),我想知道在哪里可以找到一些字符串,我可以使用这些字符串来测试它是否正常工作。

用拉丁字母,甚至是我国家的重音字母来测试它大多是没有用的,所以我不确定我应该用什么样的字符来测试。

注意:该软件是一个 C++ 库,我想将 UTF-16 用于其 API 和内部存储。

欢迎提出任何建议!

最佳答案

没有代理对的 UTF-16 范围是 U+0000 到 U+FFFF。来自 http://www.unicode.org/charts/ 的任何内容以上就可以了。

如果你看http://www.unicode.org/Public/UCD/latest/ucd/Blocks.txt ,这显示了不同 Unicode block 的字符范围,因此:

10000..1007F; Linear B Syllabary
10080..100FF; Linear B Ideograms
10100..1013F; Aegean Numbers
10140..1018F; Ancient Greek Numbers
10190..101CF; Ancient Symbols
101D0..101FF; Phaistos Disc
10280..1029F; Lycian
102A0..102DF; Carian
10300..1032F; Old Italic
10330..1034F; Gothic
10380..1039F; Ugaritic
103A0..103DF; Old Persian
10400..1044F; Deseret
10450..1047F; Shavian
10480..104AF; Osmanya
10800..1083F; Cypriot Syllabary
10840..1085F; Imperial Aramaic
10900..1091F; Phoenician
10920..1093F; Lydian
10980..1099F; Meroitic Hieroglyphs
109A0..109FF; Meroitic Cursive
10A00..10A5F; Kharoshthi
10A60..10A7F; Old South Arabian
10B00..10B3F; Avestan
10B40..10B5F; Inscriptional Parthian
10B60..10B7F; Inscriptional Pahlavi
10C00..10C4F; Old Turkic
10E60..10E7F; Rumi Numeral Symbols
11000..1107F; Brahmi
11080..110CF; Kaithi
110D0..110FF; Sora Sompeng
11100..1114F; Chakma
11180..111DF; Sharada
11680..116CF; Takri
12000..123FF; Cuneiform
12400..1247F; Cuneiform Numbers and Punctuation
13000..1342F; Egyptian Hieroglyphs
16800..16A3F; Bamum Supplement
16F00..16F9F; Miao
1B000..1B0FF; Kana Supplement
1D000..1D0FF; Byzantine Musical Symbols
1D100..1D1FF; Musical Symbols
1D200..1D24F; Ancient Greek Musical Notation
1D300..1D35F; Tai Xuan Jing Symbols
1D360..1D37F; Counting Rod Numerals
1D400..1D7FF; Mathematical Alphanumeric Symbols
1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols
1F000..1F02F; Mahjong Tiles
1F030..1F09F; Domino Tiles
1F0A0..1F0FF; Playing Cards
1F100..1F1FF; Enclosed Alphanumeric Supplement
1F200..1F2FF; Enclosed Ideographic Supplement
1F300..1F5FF; Miscellaneous Symbols And Pictographs
1F600..1F64F; Emoticons
1F680..1F6FF; Transport And Map Symbols
1F700..1F77F; Alchemical Symbols
20000..2A6DF; CJK Unified Ideographs Extension B
2A700..2B73F; CJK Unified Ideographs Extension C
2B740..2B81F; CJK Unified Ideographs Extension D
2F800..2FA1F; CJK Compatibility Ideographs Supplement
E0000..E007F; Tags
E0100..E01EF; Variation Selectors Supplement

你选吧!

此外,如果您找到的文本采用其他编码(如 UTF-8),您可以使用 iconv 等程序将其转换为 UTF-16。

关于c++ - 如何测试我的软件是否能正确使用 UTF-16?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19847195/

相关文章:

java - 数据库单元 : NoSuchTableException caught

linux - BASH:echo -e 不适用于 Unicode Cyrillic

javascript - 为什么我的 ember 测试给我 TypeError : 'undefined' is not a function?

c++ - 为什么这个 C++ 模板代码不能编译?

c++ - 我如何在没有 fstream 的情况下进行文件 i/o 来参加像 google code jam 这样的比赛?

c++ - 如何通过 lightuserdata 对象将表参数从 lua 传递到 C++?

angularjs - 如何修改 Protractor html 屏幕截图报告器以显示每个 “expect”(断言)而不是规范文件中每个 “it” block 的报告

unicode - 根据字符串的位置,阿拉伯字符是否具有不同的Unicode代码点?

java - 如何在 Java 中匹配 unicode 字符

java - 循环无向图中的所有可能路径