python write函数 编码_[Python 2.7]请教一个urllib.unquote函数write乱码的问题(utf-8和gbk相关)...

我有一个utf-8编码的字符串列表,一共有57个元素,它对应着57个中文名称(列表元素形如'%E4%B8%9C%E6%96%B9%E6%98%8E%E7%8F%A0').比如上面那个括号内的编码对应的是'东方明珠',我需要用这...

我有一个utf-8编码的字符串列表,一共有57个元素,它对应着57个中文名称(列表元素形如'%E4%B8%9C%E6%96%B9%E6%98%8E%E7%8F%A0').

比如上面那个括号内的编码对应的是'东方明珠',我需要用这个列表的元素和某txt文件里的中文字符比较,碰到'东方明珠'则返回true.

网上搜索貌似应该用urllib.unquote去分析列表元素,再和中文比较

但是我在举例探究时遇到了个诡异现象,十分不解,先上疑问,后上shell记录

希望能够得到答案,非常感谢!!

(我是Python2.7,工具是idle,以下代码是在同一个shell窗口中完成的)

疑问:

为什么第二次按gbk写入文件会导致第一次按utf-8写的中文成为乱码?

为什么第三次按utf-8写入文件又不会导致第二次的变为乱码?

为什么第三次是乱码?(因为同为utf-8,第一次write时就不是乱码,)

shell记录:

>>> import urllib

>>> a='%E4%B8%9C%E6%96%B9%E6%98%8E%E7%8F%A0' #这是'东方明珠'的utf8编码

>>> print urllib.unquote(a)

涓沧柟鏄庣彔

>>> t=open(r'test.txt','a')

>>> t.write('\n'+urllib.unquote(a))

>>> t.close()

此时可见:

>>> a='%B6%AB%B7%BD%C3%F7%D6%E9' #这是'东方明珠'gbk编码

>>> print urllib.unquote(a)

东方明珠

>>> t=open(r'test.txt','a')

>>> t.write('\n'+urllib.unquote(a))

>>> t.close()

此时可见:

>>> a='%E4%B8%9C%E6%96%B9%E6%98%8E%E7%8F%A0' #回到'东方明珠'utf-8

>>> print urllib.unquote(a)

涓沧柟鏄庣彔

>>> t=open(r'test.txt','a')

>>> t.write('\n'+urllib.unquote(a))

>>> t.close()

此时可见:

追问字符限制,我再这里补充哈= =

比如一个普通的txt文档,我捕捉到了'东方明珠',把赋值给a[0],

然后再和我那个utf-8列表元素比较

若b[1]对应的就是'东方明珠'

如何让a[0],b[1]比较后返回true呢= =

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值