如何在一个句子中跳过4字节的unicode单词

时间:2016-06-19 08:27:43

标签: python unicode warnings

向mysql(utf8)插入4字节unicode时出现警告 如果它存在于一个句子中,我想跳过4字节的unicode字 这样它就可以成功插入到mysql中。 :d


例如。 '\ xf0 \ x9f \ x8e \ x81'是礼物图标。
句子是'这很棒。' 它可以像这样处理。 “这太棒了。”

非常感谢!!!!!!

1 个答案:

答案 0 :(得分:1)

假设您最初使用Unicode格式的字符串,您可以通过执行以下操作从Basic-Multilingual-Plane字符外部删除字符:

if len(u'\U00010000') == 1:
    s = re.sub(u'[\U00010000-\U001FFFFF]', u'', s)
else:
    s = re.sub(u'[\uD800-\uDFFF]', u'', s)

(这两个分支是满足Python'窄版本'所必需的,就像Python 2的标准Windows版本一样,其中字符串使用UTF-16代理代码单元存储非BMP字符。如果您使用的是最近的Python 3然后你可以跳过这个,因为所有版本现在都是“宽”的。)

但无论如何,使用utf8mb4编码来配置表来存储数据要好得多,utf8编码代表“真正的”UTF-8,包括四字节字符,而不是MySQL&#39; s有限SI <- c("HYUNDAI CRETA", "HYUNDAI VERNA"). The object SI is actually a Selectize Input. mydb <- dbConnect(MySQL(), user = "root", password = "1234", dbname = "db1", host = "localhost") a <- paste0("select * from autotable where SUBBRAND like ",SI) dbGetQuery(mydb,a) on.exit(dbDisconnect(mydb))