我的问题是如何从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列中找到特定的字符集。
比方说,
select * from TABLE where COLUMN regexp '[^ -~]';它返回所有非ASCII字符,包括西里尔语、日语、汉语、土耳其语、法语或意大利语或阿拉伯语或任何类型的语言。但我要的是
SELECT * from TABLE WHERE COLUMN like or regexp'Japanese text only?'另一个词,我希望只选择日语编码文本。目前,我可以看到所有类型的语言与此;
select * from TABLE where COLUMN regexp '[^ -~]';但我希望选择,只选择日语、俄语、阿拉伯语或法语。怎么做?
数据库包含所有语言、混合行和UTF-8。我不确定在MySQL服务器中这是否可能?如果不可能,那怎么做呢?
非常感谢!
发布于 2016-05-06 04:55:07
好吧,让我们从我放在http://mysql.rjweb.org/doc.php/charcoll#diagnosing_charset_issues中的一张桌子开始。例如,它说E381yy是Hiragana的utf8编码,E383yy是Katakana (日语)。(Kanji是另一回事。)
要查看utf8列是否包含Katakana,请执行以下操作
WHERE HEX(col) REGEXP '^(..)*E383'西里尔
WHERE HEX(col) REGEXP '^(..)*D[0-4]'中文有点棘手,但这通常适用于中国人(以及汉字?):
WHERE HEX(col) REGEXP '^(..)*E[4-9A]'(我将更改您的标题以避免关键字“字符集”)。
西欧(包括,但不限于法语) C[23]、土耳其语(约和其他一些) (C4|C59)、希腊语:C[EF]、希伯来语:D[67]、印度语等:E0、阿拉伯语/波斯语/波斯语/乌尔都语:D[89AB]。(始终以^(..)*作为前缀。
您可能会注意到,这些并不一定非常具体。这是因为重叠。除了几个单词的拼写之外,英国英语和美国英语是无法区分的。在欧洲,有几个重音字母以不同的方式共享。印度有许多不同的字符集: Devanagari、Bengali、Gurmukhi、Gujarati等;这些字符集可能可以区分开来,但还需要更多的研究。我认为阿拉伯语/波斯语/波斯语/乌尔都语有一个字符集。
更多的:
| 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]'
https://stackoverflow.com/questions/37063793
复制相似问题