通过将4字节unicode插入mysql引发警告

通过将4字节unicode插入mysql引发警告,第1张

通过将4字节unicode插入mysql引发警告

如果MySQL无法处理4字节或更多字节的UTF-8代码,那么您必须过滤掉代码点上的所有unipre字符

U00010000
;
UTF-8将低于该阈值的代码点编码为3个字节或更少。

您可以为此使用正则表达式:

>>> import re>>> highpoints = re.compile(u'[U00010000-U0010ffff]')>>> example = u'Some example text with a sleepy face: U0001f62a'>>> highpoints.sub(u'', example)u'Some example text with a sleepy face: '

另外,您可以将该

.translate()
函数与仅包含
None
值的映射表一起使用:

>>> nohigh = { i: None for i in xrange(0x10000, 0x110000) }>>> example.translate(nohigh)u'Some example text with a sleepy face: '

但是,创建转换表将消耗大量内存,并且需要花费一些时间来生成。正则表达式方法效率更高,可能不值得您花精力。

所有这些都假定您使用的是UCS-4编译的python。如果您的python是使用UCS-2支持编译的,那么您最多只能

'U0000ffff'
在正则表达式中使用代码点,而且您永远不会遇到这个问题。

我注意到从MySQL
5.5.3开始,新添加的

utf8mb4
编解码器确实支持完整的Unipre范围。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5018269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存