Heim >Backend-Entwicklung >C++ >Wie kann ich die UTF-8-Kodierung korrekt und ohne Datenverlust in die ISO-8859-1-Kodierung konvertieren?
Lösen der Herausforderung bei der Konvertierung der Codierung von UTF-8 in ISO-8859-1
Das Konvertieren von Zeichenfolgen zwischen verschiedenen Kodierungen, insbesondere wenn es sich um Nicht-ASCII-Zeichen handelt, bereitet oft Schwierigkeiten. Ein häufiges Problem ist die Konvertierung von UTF-8 nach ISO-8859-1 (Latin-1). Falsche Konvertierungen könnten dazu führen, dass „ÄäÖöÕõÜü“ in etwas wie „Ã?äÃ?öÃ?õÃ?ü“ umgewandelt wird.
Dies liegt daran, dass UTF-8 eine Kodierung mit variabler Länge verwendet, während ISO-8859-1 eine feste Einzelbyte-Kodierung ist. Durch die direkte Konvertierung mit Methoden wie GetString()
können Nicht-ASCII-Zeichen beschädigt werden.
Die Lösung liegt in der Anwendung der Encoding.Convert
-Methode. Dadurch wird der Konvertierungsprozess korrekt abgewickelt: Es nimmt das UTF-8-Byte-Array, wandelt es in ein ISO-8859-1-Byte-Array um und dekodiert dieses Array dann mithilfe der Zielkodierung.
Hier ist der korrigierte Codeausschnitt:
<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>
Dieser Ansatz gewährleistet eine genaue Konvertierung von Nicht-ASCII-Zeichen und liefert die erwartete „ÄäÖöÕõÜü“-Ausgabe aus der Beispieleingabe. Der Schlüssel ist die von Encoding.Convert
bereitgestellte Zwischenbyte-Array-Manipulation vor der endgültigen Dekodierung.
Das obige ist der detaillierte Inhalt vonWie kann ich die UTF-8-Kodierung korrekt und ohne Datenverlust in die ISO-8859-1-Kodierung konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!