Testing 我需要一个赢了的字符串';t使用多个代码页正确转换为ANSI

Testing 我需要一个赢了的字符串';t使用多个代码页正确转换为ANSI,testing,unicode,internationalization,Testing,Unicode,Internationalization,我的.NET库必须将字符串封送到一个C库,该库需要使用系统默认的ANSI代码页对文本进行编码。由于.NET支持Unicode,因此用户可以将字符串传递到未正确转换为ANSI的库。例如,在一台英国机器上,“デスクトップ" 将在传递到C库时转到“??” 为了解决这个问题,我编写了一个方法,通过比较原始字符串和使用ANSI代码页转换的字符串来检测何时会发生这种情况。我想测试这个方法,但我确实需要一个保证不可编码的字符串。例如,我们在英语和日语机器(以及其他语言)上测试代码如果我编写测试以使用上面的日语

我的.NET库必须将字符串封送到一个C库,该库需要使用系统默认的ANSI代码页对文本进行编码。由于.NET支持Unicode,因此用户可以将字符串传递到未正确转换为ANSI的库。例如,在一台英国机器上,“デスクトップ" 将在传递到C库时转到“??”

为了解决这个问题,我编写了一个方法,通过比较原始字符串和使用ANSI代码页转换的字符串来检测何时会发生这种情况。我想测试这个方法,但我确实需要一个保证不可编码的字符串。例如,我们在英语和日语机器(以及其他语言)上测试代码如果我编写测试以使用上面的日语字符串,当日语系统正确编码字符串时,测试将失败。我可以编写测试以检查当前系统的编码,但每次添加/删除新语言时,我都会遇到维护噩梦

是否有一个unicode字符不使用任何ANSI代码页进行编码?如果没有,字符串是否可以使用足够多不同代码页的字符来构造以保证失败?我的第一次尝试是使用中文字符,因为我们不涉及中文,但显然日本人可以转换我尝试过的中文字符


编辑我现在打算接受一个建议使用格鲁吉亚语字符串的答案,但我真的希望得到一个包含少量不同语言字符的结果。我不知道我们是否计划支持格鲁吉亚语,所以现在看来还可以。现在我必须在每种语言上测试它。Joy!

有Windows代码页,涵盖所有Unicodee个字符(例如Cp1200、Cp12000、Cp65000和Cp65001),因此不可能总是创建不可转换的字符串。

有Windows代码页,涵盖所有Unicode字符(例如Cp1200、Cp12000、Cp65000和Cp65001),因此不可能总是创建不可转换的字符串。

您所说的“ANSI代码页”是什么意思?在Windows上,代码页是Microsoft的,而不是ANSI。ISO定义了8859-x系列代码集;Microsoft的Windows代码页与大多数代码集类似

您正在考虑单字节代码集吗?如果是这样,您应该查找深奥语言中不太可能存在非Unicode单字节代码集的字符


你可以看看诸如:Devanagari、Oi Chiki、Cherokee、Ogham之类的语言。

你所说的“ANSI代码页”是什么意思?在Windows上,代码页是Microsoft的,而不是ANSI。ISO定义了8859-x系列代码集;Microsoft的Windows代码页与大多数类似

您正在考虑单字节代码集吗?如果是这样,您应该查找深奥语言中不太可能存在非Unicode单字节代码集的字符

你可以看看诸如:Devanagari、Oi Chiki、Cherokee、Ogham之类的语言。

如果“ANSI”是指Windows代码页,我很确定BMP中的字符不在任何Windows代码页中

例如,尝试一些

如果“ANSI”指的是Windows代码页,我很确定BMP中的字符不在任何Windows代码页中


例如,尝试一些只使用Unicode的语言。格鲁吉亚语就是其中之一。以下是格鲁吉亚语中的“英语”一词:ინგლისური
您可以在的Georgian文件(ka.xml)中找到更多信息。

有很多只使用Unicode的语言。Georgian是其中之一。以下是格鲁吉亚语中的“英语”一词:ინგლისური
您可以在的格鲁吉亚文件(ka.xml)中找到更多信息。

FWIW,一些BMP中的汉字出现在GB18030中。My 2-cents,FWIW,一些BMP中的汉字出现在GB18030中。My 2-cents,