无法解码UTF8土耳其字母

时间:2014-01-11 19:35:56

标签: c# encoding

我正在尝试使用utf8_unicode_ci排序规则从SQL表中获取行。 我尝试使用this tool生成转换,但它并没有真正帮助。

在表格中,单元格包含:

Hocam ” You can go out ” ne demek ?
+ Dışarı çıkabilirsin.
- Teşekkürler

使用该工具解码(编码代码为windows-1254 / iso 88599):

Hocam ” You can go out ” ne demek ?
+ D??ar? ç?kabilirsin.
- Te?ekkürler

我正在设置这样的编码

WebClient wc = new WebClient();
//wc.Encoding = Encoding.GetEncoding("ISO-8859-1");
wc.Encoding = new CustomEncoding();

3 个答案:

答案 0 :(得分:2)

  Dışarı çıkabilirsin

字母ı是Unicode代码点U + 0305。下一个字母ş是U + 0351。您可以找到ISO-8859-1 here的代码表。请注意,这些代码点都不会出现在该图表上。

所以你所知道的事实是8859-1不可能对这些字符进行编码,因此完全可以得到?

还有其他代码页有这些字符,旨在处理土耳其语。像ISO-8859-3,ISO-8859-9和Windows-1254。当然还有UTF-8,它可以在Unicode中重现任何代码点,这与其他8位编码不同。但不是这样,你会看到“DıÅarııkabilirsin”。

接下来应该尝试哪一个是不可能从问题中猜出来的。你有3个好的候选人,给他们一个机会。接下来与服务器所有者交谈,他使用错误的代码页对dbase数据进行编码可能是他的问题。只有他能解决这个问题。

答案 1 :(得分:0)

尝试使用

 UTF8Encoding utf8 = new UTF8Encoding();
 WebClient wc = new WebClient();
 wc.Encoding = utf8;  

答案 2 :(得分:0)

使用“ Silverlight Tex编码类生成器”将修复