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

这个字符无法通过输入法等方法输入,甚至可能根本无法在你的系统上正确显示,或者它压根就是一个不可见字符。那么如何把这样一个字符插入到数据库(数据库该字段的编码已经指定为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'));

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值