如何使用SQL向mysql中插入一个特定UNICODE码值的字符

来源:互联网 发布:黄金时时彩软件 编辑:程序博客网 时间:2024/05/16 05:18
这个字符无法通过输入法等方法输入,甚至可能根本无法在你的系统上正确显示,或者它压根就是一个不可见字符。那么如何把这样一个字符插入到数据库(数据库该字段的编码已经指定为utf8)呢?

一种方法是借助编程语言。python、java、objective-c等编程语言都提供了使用code point来表达一个UNICODE字符的方法。

这里我们以希腊字母β来举例。这个字符的UNICODE code point是03B2,UTF-8编码是CE B2。在各种编程语言中可以方便地表达它:

Python:u'\u03b2'
Java: "\u03B2"
Objective-C: @"\u03B2"

在编程语言中直接产生想要的字符,然后传递到SQL中执行即可。

第二种方法是直接在mysql工具或者客户端的命令行进行。我们需要首先获得该字符的UTF-8编码。可以从一些在线工具中查得,如:
http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=03B2&mode=hex
可知β的UTF-8编码为CE B2。然后我们执行这样一条SQL(假设所用的数据库字符集编码是utf-8):

INSERT INTO my_tbl (my_col) VALUES (UNHEX('CEB2'));

就可以直接将β加入数据库了。

这里为了方便描述以可见字符β来举例。这些方法还可以处理不可见字符。如果只是处理可见字符,用功能齐全点的输入法就可以了。

----------------------

如果需要输入的unicode字符属于BMP平面之外的(码点超出了FFFF的范围。这种字符使用UTF-8编码或者UTF-16编码都需要使用四个字节),那么可以在编程语言里使用它的UTF-16编码表示。

例如对字符U+1F51F(是数字10),它的UNICODE code point是1F51F,UTF-8编码是F0 9F 94 9F,UTF-16编码是D83D DD1F。在编程语言里可以这样表达它:

Python: u'\ud83d\udd1f'

而在SQL中,可以这样写(假设所用的数据库字符集编码是utf-8,并且支持BMP平面之外的unicode字符。对MySQL,必须选utf8mb4,不能用utf8)

INSERT INTO my_tbl (my_col) VALUES (UNHEX('F09F949F'));

0 0
原创粉丝点击