C# : japanische Zeichen werden mit unicode-Codierung
Die intention des Kodex ist die Ausgabe von unicode als japanische Zeichen in eine Datei
String s = "\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093";
var Bytes = Encoding.Unicode.GetBytes(s);
string key = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Unicode, Encoding.UTF8, Bytes));
Schlüssel ist, ich will auf die Datei zu drucken, hat aber den Wert \u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093
Irgendwelche Ideen, was falsch?
Deine Frage und dein Beispiel-code ist völlig unerklärlich. Der ursprüngliche string ist ein C# - string (die wird intern gespeichert als UTF-16.) Dann ändern Sie es, um eine Sequenz von bytes, die eine UTF-16-string. Dann
Ein string in .NETZ ist immer UTF-16. So die Vorstellung von UTF-8-string nicht sinnvoll ist. Können Sie konvertieren eine Zeichenfolge in eine UTF-8 codierte Sequenz von bytes :
UTF-8 ist eine Zeichenkodierung für Unicode.
Vielleicht hat er versucht, um die tatsächlichen Zeichen aus?
Man könnte finden diesem älteren Beitrag hilfreich. stackoverflow.com/questions/1615559/...
Convert
es zu einer Sequenz von bytes, die eine UTF-8-string. Dann Lesen Sie diese bytes wieder in ein C# - string ist identisch mit der Zeichenfolge, die Sie in den ersten Platz. Was, genau, sind Sie hier versuchen zu erreichen?Ein string in .NETZ ist immer UTF-16. So die Vorstellung von UTF-8-string nicht sinnvoll ist. Können Sie konvertieren eine Zeichenfolge in eine UTF-8 codierte Sequenz von bytes :
var bytes = Encoding.UTF8.GetBytes(s);
. Ist es das, was Sie brauchen?UTF-8 ist eine Zeichenkodierung für Unicode.
Vielleicht hat er versucht, um die tatsächlichen Zeichen aus?
Man könnte finden diesem älteren Beitrag hilfreich. stackoverflow.com/questions/1615559/...
InformationsquelleAutor remo | 2011-08-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was falsch ist, dass ein string (
key
) hat keine Ahnung von der bytes verwendet, um es zu speichern. In diesem Fall wird dieser string ist:String:
dies ist genau das, was
bedeutet. Der Ausdruck
'\u30a3'
sieht aus wie 2-Unicode-bytes, aber es ist eigentlich nur bedeutet, dass den Charakter'ア'
.wenn Sie speichern, um eine UTF-8-Datei, die bytes geschrieben werden:
UTF-8-bytes
Wird der Inhalt (in bytes)
UTF-16 bytes
Wird der Inhalt (in bytes)
InformationsquelleAutor Jimmy
Man nicht "konvertieren" Unicode UTF-8 :-/
Unicode, abgesehen davon, dass die Eltern für den ganzen Satz von Spezifikationen, gedacht werden kann, wie "einfach" definieren von code-Punkte/Zeichen und die Regeln der Interaktion. Die UTF-8 Codierung ist der spezifische Satz von Regeln zur Zuordnung einer Sequenz von Unicode-code-points in eine Sequenz von Bytes (8-bit-bytes).
Versuchen, diese in LINQPad:
UTF-8 existiert nur in
bytes
.Happy coding.
Encoding.Unicode
bedeutet, UTF-16, so ist es möglich, dass, wenn der OP sagt "Unicode" er meint, UTF-16 im besonderen.Sehr wahr. Ich Stimme mit Ihren Kommentar posten 😉
InformationsquelleAutor