Die Konvertierung von nicht-Unicode Unicode
Ich versuche konvertieren von nicht-Unicode-Zeichenfolge, wie dieses, '1ûº¤¡¾¢º¤ìñ©2' zu Unicode wie diese, 'ໃຊ້ໃນຄົວເຮືອນ', die in Laos. Ich habe versucht mit dem code unten und der Rückgabe Wert ist wie dieses, '??????'. Irgendeine Idee, wie kann ich konvertieren Sie die Zeichenfolge?
Public Shared Function ConvertAsciiToUnicode(asciiString As String) As String
' Create two different encodings.
Dim encAscii As Encoding = Encoding.ASCII
Dim encUnicode As Encoding = Encoding.Unicode
' Convert the string into a byte[].
Dim asciiBytes As Byte() = encAscii.GetBytes(asciiString)
' Perform the conversion from one encoding to the other.
Dim unicodeBytes As Byte() = Encoding.Convert(encAscii, encUnicode, asciiBytes)
' Convert the new byte[] into a char[] and then into a string.
' This is a slightly different approach to converting to illustrate
' the use of GetCharCount/GetChars.
Dim unicodeChars As Char() = New Char(encUnicode.GetCharCount(unicodeBytes, 0, unicodeBytes.Length) - 1) {}
encUnicode.GetChars(unicodeBytes, 0, unicodeBytes.Length, unicodeChars, 0)
Dim unicodeString As New String(unicodeChars)
' Return the new unicode string
Return unicodeString
End Function
- Funktioniert der code für gewusst Wie: Konvertieren Zwischen Legacy-Kodierungen und Unicode (C# Programming Guide) an msdn.microsoft.com/en-us/library/cc488003.aspx helfen.
- Sehen Fragezeichen (?) in der Regel bedeutet, dass Ihr Charakter Ausrichtung ausgeschaltet ist. Einige Unicode-Zeichen drei Byte lang. Nicht mit UTF8 oder andere Codierungen arbeiten?
- Wenn du einen string hast, dann ist es nicht ASCII. Strings in .NET sind immer UTF-16. Wo bekommt man den ASCII-codierte Daten aus? Lest es nicht als string, das ist ein Fehler. Sie benötigen zum speichern der ASCII-Daten in ein byte-array. Aber ich würde Fragen, warum Sie ASCII-Daten in den ersten Platz, da die Informationen in es war eindeutig nicht codiert in ASCII.
- "1ûº¤¡¾¢º¤ìñ©2" ist nicht ASCII. Wie hast du es bekommen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre 8-bit-codierte Lao-text ist nicht in ASCII, sondern in einigen codepage wie IBM CP1133 oder Microsoft LC0454, oder am wahrscheinlichsten, die Thai-codepage 874. Sie haben, um herauszufinden, welches es ist.
Es wichtig ist, wie Sie erhalten haben (Lesen, empfangen, Computertomographie) des input-string. Durch die Zeit, die Sie machen es zu einem string es ist bereits in Unicode und ist einfach eine Ausgabe in UTF-8, wie zum Beispiel diese:
Hier ist das ganze in-memory-Konvertierung:
Die Anzahl
874
ist die Zahl, die sagt, in welcher codepage dein input ist. Ob ein bestimmtes Betriebssystem-installation unterstützt diese codepage, ist eine andere Frage, aber Ihr eigenes system wird fast sicherlich unterstützen, wenn Sie nur benutzt es zum Komponieren Sie Ihren Stack Overflow Frage.