2014-01-11 76 views
0

我正尝试使用utf8_unicode_ci排序规则从SQL-表中提取行。 我试图用this tool生成转换,但它并没有真正的帮助。土耳其字母无法解码UTF8

在细胞中包含表:

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

,并使用工具解码(与编码代码窗口-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(); 
+2

'我试图从SQL-Table'中获取行,并使用WebClient。我不明白这个问题。 –

+0

从哪里来的CustomEncoding代码,是SQL表还是WebService,最重要的是,当你将它看作byte []时,究竟会到达什么地方? –

+0

@ L.B,我使用WebClient通过HTTP请求XML – Saphire

回答

0

尝试使用

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

这不起作用 – Saphire

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数据的问题。只有他可以解决这个问题。

+0

我是数据库的所有者。我该如何编码桌子? – Saphire

+0

您正在使用WebClient。它连接到什么?那个。 –

+0

它连接到一个.php文件,其生成的XML以'<?xml version =“1.0”encoding =“UTF-8”standalone =“yes”?> – Saphire