我需要一些Utf32测试字符串来练习一些跨平台的字符串操作代码。我想要一套测试字符串来运行utf32< - > utf16< - > utf8编码验证BMP之外的字符可以从utf32转换为utf16代理,通过utf8,然后返回。正常。
如果所讨论的字符串不只是由随机字节组成,而且在它们编码的(各种)语言中实际上有意义,我总会觉得它更优雅。
答案 0 :(得分:13)
虽然这不是你要求的,但我总是觉得这个测试文档很有用。
http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
同一网站提供此
http://www.cl.cam.ac.uk/~mgk25/ucs/examples/quickbrown.txt
...这是英语的“Quick brown fox”文本的等价物,它使用各种语言来练习所有使用的字符。这个页面指的是更大的“pangrams”列表,它曾经在维基百科上,但显然在那里删除了。它仍然可以在这里找到:
答案 1 :(得分:0)
https://github.com/noct/cutf/tree/master/bin
包括以下文件:
UTF-8-demo.txt
big.txt
quickbrown.txt
utf8_invalid.txt
答案 2 :(得分:-1)
嗯
您可以通过Google搜索找到大量附带数据(并在SO上查看右栏中的类似问题......)
但是,我建议您将测试字符串构建为字节数组。它并不是真正的“什么数据”,只是正确处理了unicode。
E.g。你需要确保不同规范化形式的相同字符串(即使不是规范形式)仍然比较相等。
您需要检查字符串长度检测是否健壮(并识别单字节,双字节,三字节和四字节字符)。您将需要检查从头到尾遍历字符串是否符合相同的逻辑。针对unicode字符随机访问的更有针对性的测试。
这些都是你所知道的,我敢肯定。我只是拼写它们以提醒您需要测试数据,以满足边缘情况,即Unicode固有的逻辑属性。
只有这样你才能获得适当的测试数据。
超出此范围(技术正确的Unicode处理)是实际本地化(整理,字符集转换等)。我参考土耳其测试
以下是有用的链接:
答案 3 :(得分:-1)
如果您不需要像http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt测试用例那样广泛的内容,以下工具可用于创建一些感兴趣的测试用例:
http://rishida.net/tools/conversion/
例如:
// point UTF-16 UTF-8
// U+007A 007A 7A
// U+6C34 6C34 E6 B0 B4
// U+10000 D800 DC00 F0 90 80 80
// U+1D11E D834 DD1E F0 9D 84 9E
// U+10FFFD DBFF DFFD F4 8F BF BD
答案 4 :(得分:-1)
你可以尝试这个(有一些俄语,希腊语,中文等句子来测试Unicode):
答案 5 :(得分:-1)
要真正测试格式之间所有可能的转换,而不是字符转换(即towupper(),towlower()),您应该测试所有字符。以下循环为您提供了所有这些:
for(wint_t c(0); c < 0x110000; ++c)
{
if(c >= 0xD800 && c <= 0xDFFF)
{
continue;
}
// here 'c' is any one Unicode character in UTF-32
...
}
这样你可以确保你不会错过任何东西(即100%完成测试。)这只有1,112,065个字符,因此现代计算机速度非常快。