[Python] python2.7总算遇到中文编码坑了

发布于 2022-09-02 13:27:22 字数 785 浏览 22 评论 0

我从外部API中获得了一个字符串:

 "\u4ece\u8d77\u70b9\u5411\u6b63\u5357\u65b9\u5411\u51fa\u53d1,\u884c\u9a76170\u7c73,\u76f4\u884c\u8fdb\u5165\u4e2d\u5173\u6751\u4e1c\u8def"

被传给了变量a,以utf8字节串,所以:

a    
'\\u4ece\\u8d77\\u70b9\\u5411\\u6b63\\u5357\\u65b9\\u5411\\u51fa\\u53d1,\\u884c\\u9a76170\\u7c73,\\u76f4\\u884c\\u8fdb\\u5165\\u4e2d\\u5173\\u6751\\u4e1c\\u8def'

print a
\u4ece\u8d77\u70b9\u5411\u6b63\u5357\u65b9\u5411\u51fa\u53d1,\u884c\u9a76170\u7c73,\u76f4\u884c\u8fdb\u5165\u4e2d\u5173\u6751\u4e1c\u8def

这就是已经成了这样的现实状态。

我要把a变成unicode字符要怎么做?

# 把a变成:
u'\u4ece\u8d77\u70b9\u5411\u6b63\u5357\u65b9\u5411\u51fa\u53d1,\u884c\u9a76170\u7c73,\u76f4\u884c\u8fdb\u5165\u4e2d\u5173\u6751\u4e1c\u8def'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

深空失忆 2022-09-09 13:27:22

出现这个问题的主要原因是python吧Unicode编码当成了普
通的字符串,因此把原来的斜杠又加了一个斜杠进行转义
个人认为比较简单的解决方法是用 decode('unicode-escape')

str = "\u4ece\u8d77\u70b9\u5411\u6b63\u5357\u65b9\u5411\u51fa\u53d1"
uni_str = str.decode('unicode-escape')
print uni_str

图片描述

简单粗暴

伴梦长久 2022-09-09 13:27:22

无视a里的那些转义\么?那u'' + a就好了……

感性 2022-09-09 13:27:22
import re
str='\\u4ece\\u8d77\\u70b9\\u5411\\u6b63\\u5357\\u65b9\\u5411\\u51fa\\u53d1\\u884c\\u9a76170\\u7c73,\\u76f4\\u884c\\u8fdb\\u5165\\u4e2d\\u5173\\u6751\\u4e1c\\u8def'
pat=re.compile('\\\\u((\d|[a-f]){4})')
def change_str(u_str):
    return unichr(int(u_str.group(1),16))
tmp=pat.sub(change_str,str)
print(tmp)

图片描述
弄了老半天只有这样了。。。不知道有没更好的。。

楼下的str.decode('unicode-escape')直接可以

str='\\u4ece\\u8d77\\u70b9\\u5411\\u6b63\\u5357\\u65b9\\u5411\\u51fa\\u53d1\\u884c\\u9a76170\\u7c73,\\u76f4\\u884c\\u8fdb\\u5165\\u4e2d\\u5173\\u6751\\u4e1c\\u8def'
print(str.decode('unicode-escape'))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文