【发布时间】:2019-03-19 13:41:25
【问题描述】:
我在编写土耳其网站时遇到了一个奇怪的问题...在我的 vb.net 代码中,我使用了一个 vb 函数StrConv(s, VbStrConv.ProperCase),其中s 是需要正确大小写的字符串。对于土耳其网站,“ı”字符未正确转换。你有什么想法可以解决这个问题吗?谢谢。
【问题讨论】:
标签: asp.net vb.net string encoding turkish
我在编写土耳其网站时遇到了一个奇怪的问题...在我的 vb.net 代码中,我使用了一个 vb 函数StrConv(s, VbStrConv.ProperCase),其中s 是需要正确大小写的字符串。对于土耳其网站,“ı”字符未正确转换。你有什么想法可以解决这个问题吗?谢谢。
【问题讨论】:
标签: asp.net vb.net string encoding turkish
这个(臭名昭著的)案件被称为Turkish I Problem。 Jeff Atwood 曾写过:What's wrong with Turkey? 如果你将土耳其小写的无点 i 大写,它会变成大写英文 I。然后,如果你将它小写,它就会变成英文小写点 i。 (即该操作不可交换。)解决方法见this link。
【讨论】:
我记得土耳其语“ı”是转换为大写然后再转换回小写不会产生原始字符串的两种情况之一。另一种是德语锐利“s”(即ß)。
StrConv 调用的具体结果是什么?
您是以土耳其语为母语的人,您希望得到具体的结果吗?如果是:.NET CLR 中可能存在错误。然后请发布您正在使用的确切 .NET 版本。
否则结果可能非常好,即使对于非土耳其用户来说看起来很奇怪。
我是德国人,所以对于德语锐利 s:没有大写 ß。 小写是“ß”。转换为大写:“SS”。回到小写:“ss”
【讨论】:
FileReader = New StreamReader(OpenFileDialog1.FileName, Encoding.Default)
Encoding.Default 在 vb.net 中解决了这个问题
【讨论】: