/ / Unicode über TCP-Sockets senden, was ist mit Endianess - c, Sockets, Unicode, TCP

Senden von Unicode über TCP-Sockets, was ist mit Endianess - c, Sockets, Unicode, TCP

Ich lese eine Zeichenfolge mit einigen Unicode-Symbolen (UTF8)in c. Die, die ich lese, sind in 3 Bytes gespeichert, so dass diese Zeichen nicht in einem einzigen Byte gespeichert werden können. Daher mache ich mir Sorgen über die Endianität dieser Zeichen, wenn sie über den TCP-Socket mit den Funktionen write und read gesendet werden. Muss ich irgendetwas Bestimmtes mit ihnen tun, um sicherzustellen, dass der Rechner, der aus dem Stream liest, diese Unicode-Zeichen richtig interpretiert?

Antworten:

2 für die Antwort № 1

Senden Sie es als Byte-Array. Endianness sollte für UTF8-codierte Strings kein Problem sein, da diese Byte-orientiert sind. Endianness ist beispielsweise wichtig, wenn Sie zwei Bytes haben und diese als Einzelwert interpretieren müssen. Wenn Sie diese beiden Bytes einzeln interpretieren müssen, ist Endianess kein Problem.

Mehr Info: http://unicode.org/faq/utf_bom.html

F: Ist das UTF-8-Kodierungsschema das gleiche, unabhängig davon, ob das zugrunde liegenden Prozessor ist Little Endian oder Big Endian?

A: Ja. Da utf-8 als eine Folge von Bytes interpretiert wird, gibt es keine Endian-Problem, wie es für die Codierung von Formularen gibt, die 16-Bit oder verwenden 32-Bit-Code-Einheiten. Wenn eine Stückliste mit utf-8 verwendet wird, wird sie nur als verwendet eine Kodierungssignatur, um utf-8 von anderen Kodierungen zu unterscheiden hat nichts mit der Byte-Reihenfolge zu tun. [AF]