【发布时间】:2009-10-09 16:11:05
【问题描述】:
我的 .NET 库必须将字符串编组到 C 库,该库需要使用系统的默认 ANSI 代码页编码的文本。由于 .NET 支持 Unicode,因此用户可以将字符串传递给未正确转换为 ANSI 的库。例如,在英文机器上,“デスクトップ”会变成“?????”当传递给 C 库时。
为了解决这个问题,我编写了一个方法,通过将原始字符串与使用 ANSI 代码页转换的字符串进行比较来检测何时会发生这种情况。我想测试这个方法,但我真的需要一个保证不可编码的字符串。例如,我们在英文和日文机器(以及其他语言)上测试我们的代码。如果我编写测试以使用上面的日文字符串,当日文系统正确编码字符串时,测试将失败。我可以编写测试来检查当前系统的编码,但是每次添加/删除新语言时我都会做维护噩梦。
是否存在不使用 any ANSI 代码页编码的 unicode 字符?如果做不到这一点,是否可以使用来自足够多不同代码页的字符来构造字符串以保证失败?我的第一次尝试是使用汉字,因为我们不包括中文,但显然日语可以转换我尝试的汉字。
edit 我现在将接受提出格鲁吉亚字符串的答案,但我真的期待一个包含来自不同语言的少量字符的结果。我不知道我们是否打算支持格鲁吉亚语,所以目前看来还可以。现在我必须在每种语言上对其进行测试。快乐!
【问题讨论】:
标签: testing unicode internationalization