首頁 >後端開發 >C++ >如何在 C# 中正確將 UTF-8 轉換為 ISO-8859-1?

如何在 C# 中正確將 UTF-8 轉換為 ISO-8859-1?

Patricia Arquette
Patricia Arquette原創
2025-01-08 14:11:46321瀏覽

How to Correctly Convert UTF-8 to ISO-8859-1 in C#?

解決C#中UTF-8到ISO-8859-1轉換問題

將UTF-8字串轉換為ISO-8859-1時,如果不正確處理,可能會遇到結果錯誤。讓我們分析一下問題並提供解決方案。

程式碼及問題

您提供的程式碼片段嘗試使用Encoding.GetStringEncoding.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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn