2012-12-21 28 views
2

我從我不控制的第三方程序中獲取字符串。我的一段代碼以HTML格式輸出。這在英語中運行良好,但在其他語言中它會以有趣的方式顯示。例如,西班牙語的口音看起來很有趣,東方語言(即韓國)的字符看起來很有趣。我很確定我需要做一些編碼工作,以便所有語言正確顯示。如何知道C#中的字符串編碼

我對編碼的理解很差,所以在發佈真正的問題之前,我直覺地認爲它是這樣的:「我如何在C#中將此編碼爲UTF-8」,我想更深入地瞭解通過發佈更簡單的問題來解決。

這裏我的問題是:我怎麼知道我的輸入字符串有哪種類型的編碼?在西班牙語中,當我得到一個口音時,它看起來像這樣:「Acción」,而不是「Acción」。這是ANSI還是我正在處理?

非常感謝!

+3

它是非常不可能的,只是從字節流告訴。你需要問第三方程序的製造者輸出什麼編碼,並使用相同的編碼讀取。從您的描述中可以看出,這是一種Unicode編碼。 – Oded

回答

5

我得到一個腔調:「Acción」

的字符的存在是一條走不通的贈品。重音大寫一個字符的字符代碼爲0xC0或更多。這通常是雙字節utf-8編碼字符中的第一個字節。 ó字形是代碼點U + 00F3,它的utf-8編碼是0xC3 + 0xB3。這對於A和字符串在UTF-8編碼的碼點³

,但你有8位編碼像Encoding.Default閱讀它

+1

非常感謝Hans。這完全回答了這個問題。你知道我可以如何在C#中用UTF-8保存字符串嗎?你建議我在新的問題中發佈這個嗎? – Gaara