2011-02-17 62 views
0

我有一個字符串來自未知字符編碼的舊數據庫。我無法編碼/篩選字符串以顯示正確的文本。從未知字符編碼中讀取字符

什麼數據看起來像在數據庫:Marronnière謾世嘉鍋
我們需要的字符串作爲展現出來:Marronnièreà世嘉鍋

具體來說,我無法解析字符串,所以我可以顯示字符à(à

這是一個使用Sql Server 2005數據庫在VB中編寫的asp.Net 2.0站點。不知道它是否重要,但數據來自列排序:SQL_Latin1_General_CP1_CI_AS

我試過編碼的字符串編碼各種編碼無濟於事。我還將字符串(編碼方式不同)轉換爲字節數組,以便爲​​不好的字符找到唯一的字節模式,而不會成功。

任何想法或主角將不勝感激,謝謝。

回答

1

這聽起來像在SQL Server數據庫中的歸類不匹配,這是實際使用:(這對粗心的開發者一個相當常見的錯誤的字符編碼。

這就是爲什麼SQL Server管理工具都出現了怪異字符,而不是你期望的字符串。

可能是UTF-8?在UTF-8 Ã由字節0xC3 0xA8,這將在Windows代碼頁進行解釋的Latin-1作爲è代表。我知道沒有任何關於SQL Server排序規則的信息,但似乎SQL_Latin1_CP1_CI_AS類似於Windows「Latin-1 」。

您可能需要

  • 從數據庫中讀取時修復了編碼。對於需要處理這個數據庫和代碼的下一個可憐的受害者來說,這是一個醜陋和困惑。
  • 或更好地更正數據庫中的數據,使其與排序規則匹配。您可能希望將排序規則更改爲UTF-8或UTF-16:您還需要更改數據。