python设置unicode编码_一次明白,彻底让你不用担心python中文与编码了

当你在python中使用中文时,你一定见过下面的错误

SyntaxError: Non-ASCII character '\xe6' in file ./filename.py on line 3, but no encoding declared。

你一定听过什么是编码

比如,ascii,utf-8,gbk……。这些总的来说就是如何把一个字或者字母编码成计算机能认识的0和1

比如我举“你好,python"这句话:

'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8cpython'(utf8)

'\xc4\xe3\xba\xc3\xa3\xacpython'(gbk)

至于ascii,不支持中文,宁打的化,就是错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

你必须要知道的string 和 unicode 区别

string object是由characters组成的sequence,而unicode object是Unicode code units组成的sequence。

unicode就是 Unicode code units组成的序列,比如还是上面那句话:

u'\u4f60\u597d\uff0cpython'

而至于string这货,character是有多种编码方式的,比如单字节的ASCII,双字节的GB2312等等,再比如UTF-8。要想解读string,必需知道string里的character是用哪种编码方式,然后才能进行因为编码。

关于这些你要记住的只有一点:python所有编码都以unicode作为中转。 有了这句话,python编码就不是问题了。

我还是举上面那句话的例子:

print '你好,python'时发生了什么?

python将'你好,python'转换成了unicode即:

u'\u4f60\u597d\uff0cpython'

2.根据python的默认编码,把unicode转换成相应的编码,这里是unicode->ascii。因为ascii不支持中文,所以就报了错。

设定unicode转换成哪种编码的string

这很简单,想没有报错,只要从unicode中转时,转换成系统的默认编码就行了。

比如linux的utf8下(win下,改成gbk就好):

utest=u'你好,python'

u'\u4f60\u597d\uff0cpython'

utestutf8=utest.encode("utf-8")

'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8cpython'

这样print utestutf8 就是'你好,python'

我不能每一次都用encode吧。

当然,这个就是多数教程讲的,设定默认编码的注释:

-- coding: UTF-8 --

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值