我想插入一条记录到具有非ASCII Unicode字符的MySQL,但我在终端上不让我轻松输入非ASCII字符。如何在MySQL的SQL语法中转义Unicode字面值?MySQL unicode literals
10
A
回答
7
参见:http://bugs.mysql.com/bug.php?id=10199 (错误#10199:“允许Unicode转义序列字符串文字。”) 这个请求已经被“打开”自2005年以来
从 http://eng.kaching.com/2009/10/mysql-unicode-escape-sequences.html 虽然你可以看到下面的例子,它实际上似乎工作,但要求您知道实际的逐字节UTF8编码:
“您还可以使用可变长度的UTF-8表示法(方便,例如,从utf-8 URL编码值,如%E2%80%98)。“
mysql> select _utf8 x'E28098';
+---+
| ‘ |
+---+
0
此存储的函数提供缺少的功能MySQL是(显然)中,用一种方法来把一个文字代码点为字符,而不必已经知道UTF-8编码。
如果VARCHAR(1)
似乎很奇怪,因为在MySQL UTF8字符可以达到3个字节长,记住大小VARCHAR
是字符,不字节。该函数从输入值中返回一个单一的UTF-8编码字符。
对于十六进制文字,前置0x
。
DELIMITER $$
DROP FUNCTION IF EXISTS `utf8_char` $$
CREATE FUNCTION `utf8_char`(v smallint unsigned) RETURNS VARCHAR(1) CHARSET utf8
NO SQL
DETERMINISTIC
BEGIN
-- http://stackoverflow.com/questions/3632410/mysql-unicode-literals/30675371#30675371
RETURN CHAR(CASE
WHEN v <= 0x7F THEN v
WHEN v <= 0x7FF THEN 0xC080 | ((v >> 6) << 8) | (v & 0x3F)
WHEN v <= 0xFFFF THEN 0xE08080 | (((v >> 12) & 0x0F) << 16) | (((v >> 6) & 0x3F) << 8) | (v & 0x3F)
ELSE NULL END);
END $$
DELIMITER ;
输出示例:
mysql> select utf8_char(8592) AS 'leftwards_arrow';
+-----------------+
| leftwards_arrow |
+-----------------+
| ← |
+-----------------+
1 row in set (0.00 sec)
mysql> select utf8_char(0x2192) AS 'rightwards_arrow_hex';
+----------------------+
| rightwards_arrow_hex |
+----------------------+
| → |
+----------------------+
1 row in set (0.00 sec)
相关问题
- 1. JavaScript Object Literals&Array Literals
- 2. NSNumber Literals
- 3. long integer literals
- 4. .appendTo和HTML literals
- 5. Javascript Object Literals和jQuery
- 6. php mysql flex unicode
- 7. mysql asp.net c#unicode
- 8. VB.NET,MySQL和Unicode
- 9. mysql unicode问题
- 10. php mysql和unicode
- 11. Object Literals - Vs - 构造函数
- 12. TypeScript:Tagged Template Literals显示错误
- 13. 关于数字Literals词汇
- 14. mysql和Unicode字符
- 15. MySQL的Unicode数据
- 16. Unicode问题Django-Python-URLLIB-MySQL
- 17. Python MySQL的Unicode错误
- 18. Unicode电子表格到MySQL
- 19. Django和MySQL的Unicode错误
- 20. PHP和MySQL将不为Unicode
- 21. Python与MySql unicode问题
- 22. python将unicode存储到mysql
- 23. json_encode和mysql unicode的问题
- 24. MySQL UTF/Unicode迁移技巧
- 25. MySQL和PHP的unicode问题
- 26. 在XML Literals中使用字符串
- 27. Knockout Object Literals不适用于Google Maps?
- 28. 在VB.NET XML Literals中设置属性值
- 29. MySQL不想存储unicode字符
- 30. 的Perl DBI/MySQL的Unicode的错误
我得到一点点超越激怒驱动通过向下选民谁,不加评论,反对票答案是显然是正确和随机愚蠢显然工作。如果您没有足够的技巧来理解答案并解释您的反对意见,请至少停止展示答案。 – 2016-04-19 09:27:20
工作正常,谢谢 – 2017-01-26 06:51:38