我需要一些Utf32测试字符串来锻炼一些跨平台字符串操作代码。我想要一套测试字符串,它们可以执行utf32 < - > utf16 < - > utf8编码,以验证BMP之外的字符可以从utf32,utf16替代品,通过utf8转换回来。正常。单元测试的Unicode测试字符串
如果所讨论的字符串不是由随机字节组成,而是在他们编码的(各种)语言中实际上是有意义的,我总是觉得它更优雅。
我需要一些Utf32测试字符串来锻炼一些跨平台字符串操作代码。我想要一套测试字符串,它们可以执行utf32 < - > utf16 < - > utf8编码,以验证BMP之外的字符可以从utf32,utf16替代品,通过utf8转换回来。正常。单元测试的Unicode测试字符串
如果所讨论的字符串不是由随机字节组成,而是在他们编码的(各种)语言中实际上是有意义的,我总是觉得它更优雅。
虽然这是不太你问什么,我总是发现这个测试文件有用。
http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
该站点上提供此
http://www.cl.cam.ac.uk/~mgk25/ucs/examples/quickbrown.txt
......这是英国的“快速的棕色狐狸”文本的等价物,其练习中使用的所有字符,各种语言。此页面指的是以前在维基百科上的“pangrams”的更大列表,但显然在那里被删除。它仍然可以在这里找到:
嗯
您可以通过谷歌搜索发现很多附带的数据(看像这些在做题的右列...)
不过,我建议大家还是建立自己的测试串作为字节数组。这不是真正的'什么数据',只是unicode得到正确处理。
E.g.你会希望确保不同规范化形式的相同字符串(即使不是规范形式)仍然相等。
您需要检查字符串长度检测是否健壮(并识别单字节,双字节,三字节和四字节字符)。你将要检查遍历一个从开始到结束的字符串是否符合相同的逻辑。针对unicode字符的随机访问更有针对性的测试。
这些都是你知道的事情,我敢肯定。我只是拼出来提醒你,你需要测试数据来满足边缘情况,这是Unicode固有的逻辑属性。
只有这样你才能有正确的测试数据。
超出此范围(技术上正确的Unicode处理)是实际本地化(整理,字符集转换等)。我指的是土耳其测试
这里是有用的链接:
如果你什么都不需要尽可能全面的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
你可以试试这个(有一些仙在俄语,希腊语,中国等tences测试的Unicode):
为了真正测试格式之间的所有可能的转换,而不是字符转换(即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%完整的测试)。这是唯一的1112065个字符,所以这将是非常快了现代计算机。
这就是我正在寻找! – 2011-07-30 05:57:23
quickbrown.txt文档是指Wiki上的更具说明性的列表,但已被删除。不过这是[这里](http://clagnut.com/blog/2380/)。 – TinyRacoon 2016-05-17 15:02:04