解決C#中UTF-8到ISO-8859-1轉換問題
將UTF-8字串轉換為ISO-8859-1時,如果不正確處理,可能會遇到結果錯誤。讓我們分析一下問題並提供解決方案。
程式碼及問題
您提供的程式碼片段嘗試使用Encoding.GetString
和Encoding.GetBytes
將UTF-8轉換為ISO-8859-1。但是,對於此特定轉換,需要額外的步驟。
解決方案:使用Encoding.Convert
為了在解碼到目標編碼之前正確調整位元組數組,應使用Encoding.Convert
。以下是修改後的程式碼:
<code class="language-csharp">Encoding iso = Encoding.GetEncoding("ISO-8859-1"); Encoding utf8 = Encoding.UTF8; byte[] utfBytes = utf8.GetBytes(Message); byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes); string msg = iso.GetString(isoBytes);</code>
解釋
Encoding.GetEncoding
檢索特定字元編碼的編碼器和解碼器。 Encoding.GetBytes
將UTF-8來源字串編碼為位元組數組。但是,直接使用Encoding.GetString
解碼此位元組陣列不會產生所需的ISO-8859-1字串。
Encoding.Convert
調整位元組數組以符合目標編碼。在這種情況下,它將位元組轉換為與ISO-8859-1編碼匹配。隨後,Encoding.GetString
可以將調整後的位元組陣列解碼為正確的ISO-8859-1字串。
結果
套用此修改後,您的結果字串將正確轉換為ISO-8859-1,不會出現亂碼。
以上是如何在 C# 中正確將 UTF-8 轉換為 ISO-8859-1?的詳細內容。更多資訊請關注PHP中文網其他相關文章!