PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie konvertiert man Strings mit PostgreSQL in Unicode?

PostgreSQL-Datenbanken haben einen nativen Zeichentyp, die „Servercodierung“. Es ist normalerweise utf-8.

Der gesamte Text ist in dieser Kodierung. Text mit gemischter Codierung wird nicht unterstützt, außer wenn er als bytea gespeichert wird (also als undurchsichtige Bytefolgen).

Sie können keine "Unicode"- oder "Nicht-Unicode"-Strings speichern, und PostgreSQL hat kein Konzept von "varchar" vs. "nvarchar". Mit utf-8 werden Zeichen, die in den 7-Bit-ASCII-Bereich fallen (und einige andere), als einzelnes Byte gespeichert, und breitere Zeichen erfordern mehr Speicherplatz, also ist es einfach automatisch. utf-8 erfordert mehr Speicherplatz als ucs-2 oder utf-16 für Text, der ausschließlich aus „breiten“ Zeichen besteht, aber weniger für Text, der eine Mischung ist.

PostgreSQL konvertiert mithilfe von client_encoding automatisch in die/aus der Textcodierung des Clients Einstellung. Eine explizite Konvertierung ist nicht erforderlich.

Wenn Ihr Client "Unicode" ist (was Microsoft-Produkte normalerweise sagen, wenn sie UCS-2 oder UTF-16 meinen), dann kümmern sich die meisten Client-Treiber um die Konvertierung von utf-8 <--> utf-16 für Sie.

Sie sollten sich also nicht darum kümmern müssen, solange Ihr Client I/O mit korrekten Zeichensatzoptionen durchführt und eine korrekte client_encoding einstellt das mit den Daten übereinstimmt, die es tatsächlich über das Kabel sendet. (Bei den meisten Client-Treibern wie PgJDBC, nPgSQL oder dem Unicode-psqlODBC-Treiber geschieht dies automatisch).

Siehe: