首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何识别MySQL中utf-8列中的语言

如何识别MySQL中utf-8列中的语言
EN

Stack Overflow用户
提问于 2016-05-06 03:37:26
回答 1查看 3K关注 0票数 2

我的问题是如何从MySQL server?中的utf-8列中找到特定的字符集。

请注意,这不是重复的问题,请仔细阅读询问的内容,而不是你的想法。

目前,MySQL确实与utf-8完美地工作,显示了所有类型的不同语言,我在数据库中看到不同的语言没有任何问题。我使用SQLyog连接MySQL服务器,所有选择的结果都是完美的,我可以看到西里尔语、日语、汉语、土耳其语、法语或意大利语或阿拉伯语,或者任何类型的语言都很完美。同样,my.ini和脚本也配置得很完美,运行良好。

在这里,How can I find non-ASCII characters in MySQL?,我看到一些人回答了这个问题,他们的答案,也完美地找到了非ASCII文本。但我的问题是相似的,但没有什么不同。我想从MySQL server.中的utf-8列中找到特定的字符集。

比方说,

代码语言:javascript
复制
select * from TABLE where COLUMN regexp '[^ -~]';

它返回所有非ASCII字符,包括西里尔语、日语、汉语、土耳其语、法语或意大利语或阿拉伯语或任何类型的语言。但我要的是

代码语言:javascript
复制
SELECT * from TABLE WHERE COLUMN like or regexp'Japanese text only?'

另一个词,我希望只选择日语编码文本。目前,我可以看到所有类型的语言与此;

代码语言:javascript
复制
select * from TABLE where COLUMN regexp '[^ -~]';

但我希望选择,只选择日语、俄语、阿拉伯语或法语。怎么做?

数据库包含所有语言、混合行和UTF-8。我不确定在MySQL服务器中这是否可能?如果不可能,那怎么做呢?

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-05-06 04:55:07

好吧,让我们从我放在http://mysql.rjweb.org/doc.php/charcoll#diagnosing_charset_issues中的一张桌子开始。例如,它说E381yy是Hiragana的utf8编码,E383yy是Katakana (日语)。(Kanji是另一回事。)

要查看utf8列是否包含Katakana,请执行以下操作

代码语言:javascript
复制
WHERE HEX(col) REGEXP '^(..)*E383'

西里尔

代码语言:javascript
复制
WHERE HEX(col) REGEXP '^(..)*D[0-4]'

中文有点棘手,但这通常适用于中国人(以及汉字?):

代码语言:javascript
复制
WHERE HEX(col) REGEXP '^(..)*E[4-9A]'

(我将更改您的标题以避免关键字“字符集”)。

西欧(包括,但不限于法语) C[23]、土耳其语(约和其他一些) (C4|C59)、希腊语:C[EF]、希伯来语:D[67]、印度语等:E0、阿拉伯语/波斯语/波斯语/乌尔都语:D[89AB]。(始终以^(..)*作为前缀。

您可能会注意到,这些并不一定非常具体。这是因为重叠。除了几个单词的拼写之外,英国英语和美国英语是无法区分的。在欧洲,有几个重音字母以不同的方式共享。印度有许多不同的字符集: Devanagari、Bengali、Gurmukhi、Gujarati等;这些字符集可能可以区分开来,但还需要更多的研究。我认为阿拉伯语/波斯语/波斯语/乌尔都语有一个字符集。

更多的:

代码语言:javascript
复制
| 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        |

所以,对于DEVANAGARI,'^(..)*E0A[45]'

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37063793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档