我在学习代码测试时遇到了“土耳其测试”这个词。我真的不知道它意味着什么。
什么是土耳其测试?为什么这么称呼?
答案 0 :(得分:20)
土耳其问题与软件国际化有关,或仅仅与其在各种语言文化中的不当行为有关。
在不同的国家,有不同的撰写日期标准(土耳其14.04.2008和美国4/14/2008),数字(波兰123,45和美国123.45)和关于字符大写的规则(如土耳其用字母i,I和ı)。
正如Jeff Moser所指出的那样,问题是由土耳其用户命名的,他首先在ToUpper()
函数中找到了该错误。以下评论中有更多细节。
但问题不仅限于土耳其和字符串转换。
在波兰和许多其他国家,日期和数字也以不同的方式书写 与日期或数字解释相关的问题也称为土耳其问题。
来自Google的链接搜索土耳其问题已详细说明:
答案 1 :(得分:16)
Here is described the turkey test
忘记土耳其,这甚至不会在美国通过。您需要不区分大小写的比较。所以你试试:
String.Compare(string,string,bool ignoreCase):
...
其中任何一项都通过“土耳其测试吗?”
没有机会!
原因:你遇到了“土耳其语”问题。
正如很多人所讨论的,土耳其语中的“我”与大多数语言的行为不同。根据Unicode标准,当它移动到大写时,我们的小写“i”变为“İ”(U + 0130“Latin Capital Letter I With Dot Above”)。同样,当它移动到小写时,我们的大写“I”变成“ı”(U + 0131“Latin Small Letter Dotless I”)。
答案 2 :(得分:8)
我们写日期越小越大,如dd.MM.yyyy:28.10.2010
我们使用'。'(点)表示千位分隔符,','(逗号)表示小数点分隔符:4.567,9
我们有ö=>Ö,ç=>Ç,ş=>Ş,ğ=>Ğ,ü=>Ü,最重要的是ı=> I和i => ; I 强>;换句话说,上部I的小写字母是无点的,而下部i的大写字母是点状的。
由于上述规则导致的无意义错误,人们可能会有非常紧张的时期。
如果你的代码在土耳其正常运行,那么它可能在任何地方运行。
答案 3 :(得分:4)
所谓的“土耳其测试”与软件国际化有关。全球化/国际化的一个问题是不同文化中的日期和时间格式可能在许多层面上有所不同(日/月/年订单,日期分隔符等)。
此外,土耳其有一些特殊的资本化规则,这可能导致问题。例如,土耳其语“i”字符是许多程序的常见问题,这些程序以错误的方式将其大写。
答案 4 :(得分:2)
@Luixv提供的链接提供了对该问题的全面描述。
摘要是,如果您只在一个非英语语言环境中测试代码,请在土耳其语中进行测试。
这是因为土耳其语有大多数边缘情况的实例,您可能会遇到本地化,包括“异常”格式字符串和非标准字符(例如i的不同大小写规则)。
答案 5 :(得分:1)
杰夫阿特伍德有一篇博客文章,这是我自己遇到的第一篇文章。 总之,尝试在土耳其语语言环境下运行您的应用程序是一个很好的测试 你的I18n。
这是杰夫article