Mysql
 sql >> Database >  >> RDS >> Mysql

Come identificare una lingua nella colonna utf-8 in MySQL

Bene, iniziamo con una tabella che ho inserito qui . Dice, ad esempio, che E381yy è la codifica utf8 per Hiragana e E383yy è Katakana (giapponese). (Kanji è un'altra questione.)

Per vedere se una colonna utf8 contiene Katakana, fai qualcosa come

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

Il cirillico potrebbe essere

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

Il cinese è un po' complicato, ma potrebbe essere solitamente lavora per il cinese (e il kanji?):

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

(Cambierò il tuo titolo per evitare la parola chiave "set di caratteri".)

Europa occidentale (incluso, ma non limitato al francese) C[23] , turco (circa e alcuni altri) (C4|C59) , greco:C[EF] , ebraico:D[67] , indiano, ecc:E0 , arabo/farsi/persiano/urdu:D[89AB] . (Prefisso sempre ^(..)* .

Potresti notare che questi non sono necessariamente molto specifici. Ciò è dovuto alle sovrapposizioni. L'inglese britannico e l'inglese americano non possono essere distinti se non per l'ortografia di alcune parole. Diverse lettere accentate sono condivise in vari modi in Europa. L'India ha molti set di personaggi diversi:Devanagari, bengalese, Gurmukhi, Gujarati, ecc.; questi sono probabilmente distinguibili, ma ci vorrebbero più ricerche. Penso che arabo/farsi/persiano/urdu condividano un set di caratteri.

Alcuni di più:

| 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        |

Quindi, per DEVANAGARI, '^(..)*E0A[45]'