2014-01-11 118 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