Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So identifizieren Sie eine Sprache in der utf-8-Spalte in MySQL

Beginnen wir mit einer Tabelle, die ich hier eingefügt habe . Dort heißt es zum Beispiel, dass E381yy die utf8-Kodierung für Hiragana und E383yy Katakana (Japanisch) ist. (Kanji ist eine andere Sache.)

Um zu sehen, ob eine utf8-Spalte Katakana enthält, tun Sie so etwas wie

WHERE HEX(col) REGEXP '^(..)*E383'

Kyrillisch könnte sein

WHERE HEX(col) REGEXP '^(..)*D[0-4]'

Chinesisch ist ein bisschen knifflig, aber das könnte normalerweise sein Arbeit für Chinesisch (und Kanji?):

WHERE HEX(col) REGEXP '^(..)*E[4-9A]'

(Ich werde Ihren Titel ändern, um das Schlüsselwort „Zeichensatz“ zu vermeiden.)

Westeuropa (einschließlich, aber nicht beschränkt auf Französisch) C[23] , Türkisch (ca. und einige andere) (C4|C59) , Griechisch:C[EF] , Hebräisch:D[67] , indisch usw.:E0 , Arabisch/Farsi/Persisch/Urdu:D[89AB] . (Immer ^(..)* voranstellen .

Sie werden vielleicht feststellen, dass diese nicht unbedingt sehr spezifisch sind. Das liegt an Überschneidungen. Britisches Englisch und amerikanisches Englisch können nicht unterschieden werden, außer durch die Schreibweise einiger weniger Wörter. Mehrere akzentuierte Buchstaben werden in Europa auf verschiedene Weise geteilt. Indien hat viele verschiedene Zeichensätze:Devanagari, Bengali, Gurmukhi, Gujarati usw.; Diese sind wahrscheinlich unterscheidbar, aber es würde mehr Forschung erfordern. Ich denke, Arabisch/Farsi/Persisch/Urdu teilen sich einen Zeichensatz.

Noch etwas:

| SAMARITAN                     | E0A080        | E0A0BE        |
| DEVANAGARI                    | E0A480        | E0A5BF        |
| BENGALI                       | E0A681        | E0A7BB        |
| GURMUKHI                      | E0A881        | E0A9B5        |
| GUJARATI                      | E0AA81        | E0ABB1        |
| ORIYA                         | E0AC81        | E0ADB1        |
| TAMIL                         | E0AE82        | E0AFBA        |
| TELUGU                        | E0B081        | E0B1BF        |
| KANNADA                       | E0B282        | E0B3B2        |
| MALAYALAM                     | E0B482        | E0B5BF        |
| SINHALA                       | E0B682        | E0B7B4        |
| THAI                          | E0B881        | E0B99B        |
| LAO                           | E0BA81        | E0BB9D        |
| TIBETAN                       | E0BC80        | E0BF94        |

Also, für DEVANAGARI, '^(..)*E0A[45]'