python程序采用unicode编码、英文字符和中文字符_python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't...

本文详细探讨了Python中处理中文字符时遇到的UnicodeDecodeError问题,包括Python的编码规则、如何解决非ASCII字符错误、字符编码函数如unicode、decode和encode的使用,以及如何在Python脚本中声明编码类型以避免语法错误。此外,还提到了Linux终端的字符编码设置和Python中处理字符编码的注意事项。
摘要由CSDN通过智能技术生成

摘要:在进行Python脚本的编写时,如果我们用python来处理网页数据或者进行与中文字符有关的处理工作,经常出现这样的出错信息:SyntaxError: Non-ASCII character '\xe6' in file ./filename.py on line 3, but no encoding declared。本文主要讲解python中与unicode和中文、特殊字符编码有关的问题。字符编码和解码需要遵循什么规律?

前言:

如果密码领域一样,从明文到密码是加密,从密码到明文是解密。在python中,编码:unicode-->str;解码str-->unicode.既然是编码,那么就和密码领域一样,编码和解码自然涉及到编码/解码方案(对应加密或者解密算法),unicode相当于明文。在python中,编码函数是encode(),解码函数是decode()。需要注意的一点是,如果我们调用str.encode(),这里涉及到一个隐士的类型转化,会现将str转化成unicode,才能进行编码,这也是不太容易理解的地方。所以,str.encode()实际上就等价于str.decode(sys.defaultencoding).encode().而sys.defaultencoding一般是ascii,它是不能用来编码中文字符的。

在阅读本文之间,如果你对字符编码不是很熟悉,有必要先了解以下字符编码。可以参考:字符编码简介。

1.一个中文字符编码问题

一个python脚本如下:

#!/usr/bin/python

string='我的'

printstring

运行脚本,提示信息如下:

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

出错原因:python默认采用ascii编码,而中文编码不再ascii编码能够表示的范围之内,所以string无法将“我的”作为ascii编码保存为str类型。

解决办法:采用中文字符编码,在脚本第二行加入编码类型,如下:

#!/usr/bin/python

#coding=gbk

string='我的'

printstring

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值