Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como identificar um idioma na coluna utf-8 no MySQL


Bem, vamos começar com uma tabela que coloquei aqui . Ele diz, por exemplo, que E381yy é a codificação utf8 para Hiragana e E383yy é Katakana (japonês). (Kanji é outra questão.)

Para ver se uma coluna utf8 contém Katakana, faça algo como
WHERE HEX(col) REGEXP '^(..)*E383'

O cirílico pode ser
WHERE HEX(col) REGEXP '^(..)*D[0-4]'

Chinês é um pouco complicado, mas isso pode geralmente trabalhar para chinês (e Kanji?):
WHERE HEX(col) REGEXP '^(..)*E[4-9A]'

(Vou mudar seu título para evitar a palavra-chave 'conjunto de caracteres'.)

Europa Ocidental (incluindo, mas não limitado a, francês) C[23] , turco (aprox e alguns outros) (C4|C59) , grego:C[EF] , hebraico:D[67] , indiano, etc:E0 , árabe/farsi/persa/urdu:D[89AB] . (Sempre prefixe com ^(..)* .

Você pode notar que estes não são necessariamente muito específicos. Isso ocorre por causa das sobreposições. O inglês britânico e o inglês americano não podem ser distinguidos, exceto pela ortografia de algumas palavras. Várias letras acentuadas são compartilhadas de várias maneiras na Europa. A Índia tem muitos conjuntos de caracteres diferentes:Devanagari, Bengali, Gurmukhi, Gujarati, etc.; estes são provavelmente distinguíveis, mas seriam necessárias mais pesquisas. Acho que árabe/farsi/persa/urdu compartilham um conjunto de caracteres.

Um pouco mais:
| 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        |

Então, para DEVANAGARI, '^(..)*E0A[45]'