Wie genau ist eine, um alle Sprachen in Postgres utf8
Zeichensatz nahtlos unterstützt unterstützt? Es scheint, als müssten wir eine einzige sprachspezifische Sortierung zusammen mit dem Zeichensatz angeben, z. B. en_US.utf8
. Wenn ich mich nicht irre, haben wir nicht die Möglichkeit, sowohl Englisch() als auch Chinesisch (zh_CN
) in der gleichen utf8
Spalte zu speichern, während eine beliebige Art von sinnvollem Kollationsverhalten beibehalten wird. Wenn ich eine Spalte wie en_US.utf8
definiere, wie soll sie mit Werten umgehen, die chinesische (zh_CN
) Zeichen/Bytefolgen enthalten? Die Realität ist, dass ein einzelner Spaltenwert mehrere Sprachen enthalten kann (z. B. "Hello und 晚安") und einfach nicht in einer Sprache zusammengefasst werden kann.Mehrere Sprachen mit utf8 in postgresql
Ja, ich kann beliebige Zeichenfolgen speichern; aber was ist das definierte Verhalten für die Bestellung auf einer en_US.utf8
Spalte, die englische, deutsche, chinesische, japanische und koreanische Strings enthält?
Ich verstehe, dass Mysql utf8mb4_unicode_ci
Kollation ist nicht perfekt, und dass es keine festgelegten Standard für das Sortieren der gesamten Unicode-Set folgt. Ich kann schon die Anti-Mysql-Menge hören, die darüber seufzt, wie mysqls sprachunabhängige Kollatierungen willkürlich, semantisch bedeutungslos oder sogar rein ungültig sind. Aber Tatsache ist, es funktioniert gut genug, und erfüllt die Erwartung, dass utf8
= mehrsprachige Unicode-Unterstützung.
Ist Postgres nur extrem stur mit der Tatsache, dass es semantisch falsch ist, über das Unicode-Spektrum zu sammeln? Ich weiß, dass die Entwickler sehr streng sind, wenn es darum geht, "Dinge entsprechend der Spezifikation zu tun", aber diese Unfähigkeit, mehrere Sprachen zu jonglieren, ist gelinde gesagt frustrierend. Fehle ich etwas, das das mehrsprachige Problem löst, oder ist die offizielle Meinung, dass eine einzelne Spalte mit jeder Sprache umgehen kann, aber nur eine Sprache gleichzeitig?
"* aber was ist das definierte Verhalten für die Sortierung in einer Spalte, die englische, deutsche, chinesische, japanische und koreanische Strings * enthält" - einfach gesagt: das geht nicht. Leider ist die Sortierungsunterstützung nicht der stärkste Bereich von Postgres, und der Operator 'ORDER BY' erlaubt es nicht, eine Sortierung für die Sortierung anzugeben, die der richtige Weg wäre, wenn Sie nur eine einzige Sprache auswählen würden. Obwohl es den _content_ in mehreren Sprachen recht einfach handhaben kann, kann es die Sortierung nicht handhaben, das ist richtig. –
Sie könnten immer versuchen 'collate =" C "' - nicht sicher, wie gut das mit UTF8 funktioniert, obwohl –