在 C# 中正確處理 UTF-8 到 ISO-8859-1 字串轉換
將 UTF-8 字串直接轉換為 ISO-8859-1 (Latin-1) 通常會導致資料遺失和字元損壞。 這是因為 UTF-8 使用可變長度編碼,而 ISO-8859-1 是固定長度、單字節編碼。 簡單地更改編碼而不進行正確的位元組轉換將導致不正確的輸出。
準確轉換的關鍵在於使用Encoding.Convert
方法。此方法正確地將 UTF-8 位元組對應到其 ISO-8859-1 等效字節,處理任何必要的轉換。 ISO-8859-1 中不存在的字元將被替換為其最佳近似值,否則可能會遺失。
這是修正後的 C# 程式碼:
<code class="language-csharp">Encoding iso = Encoding.GetEncoding("ISO-8859-1"); Encoding utf8 = Encoding.UTF8; string utf8String = "ÄäÖöÕõÜü"; // Example UTF-8 string byte[] utf8Bytes = utf8.GetBytes(utf8String); byte[] isoBytes = Encoding.Convert(utf8, iso, utf8Bytes); string iso88591String = iso.GetString(isoBytes);</code>
此程式碼首先從原始字串中取得 UTF-8 位元組。 然後,Encoding.Convert
將這些位元組轉換為適合 ISO-8859-1 的表示形式。 最後,使用 ISO-8859-1 編碼對生成的位元組數組進行解碼以產生最終字串。 請記住,在此過程中,ISO-8859-1 字元集之外的任何字元都可能會遺失或被替換。
以上是如何在 C# 中正確將 UTF-8 字串轉換為 ISO-8859-1?的詳細內容。更多資訊請關注PHP中文網其他相關文章!