python 遇到 syntaxerror: non-ascii character '/xd6' in file 我 教你解决 (python问题)(转)

遇到标题上的问题,按照我的解决广方案来吧

=====================================

(一) 用记事本创建一个文件ChineseTest.py,默认ANSI: s = "中文" print s
测试一下瞧瞧: E:/Project/Python/Test>python ChineseTest.py

File "ChineseTest.py", line 1 SyntaxError: Non-ASCII character ‘/xd6‘ in file ChineseTest.py on line 1, but no encoding declared ; see http://www.python.org/peps/pep-0263.html for details
偷偷地把文件编码改成UTF-8: E:/Project/Python/Test>python ChineseTest.py   File "ChineseTest.py", line 1 SyntaxError: Non-ASCII character ‘/xe4‘ in file ChineseTest.py on line 1, but no encoding declared ; see http://www.pytho n.org/peps/pep-0263.html for details
无济于事。。。 既然它提供了网址,那就看看吧。简单地浏览一下,终于知道如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明。把ChineseTest.py文件的编码重新改为ANSI,并加上编码声明: # coding=gbk s = "中文" print s
再试一下: E:/Project/Python/Test>python ChineseTest.py 中文
正常咯:) (二) 看一看它的长度: # coding=gbk s = "中文" print len(s) 结果:4。 s这里是str类型,所以计算的时候一个中文相当于两个英文字符,因此长度为4。 我们这样写: # coding=gbk s = "中文" s1 = u"中文" s2 = unicode(s, "gbk") #省略参数将用python默认的ASCII来解码 s3 = s.decode("gbk") #把str转换成unicode是decode,unicode函数作用与之相同 print len(s1) print len(s2) print len(s3) 结果: 2 2 2 (三) 接着来看看文件的处理: 建立一个文件test.txt,文件格式用ANSI,内容为: abc中文 用python来读取 # coding=gbk print open("Test.txt").read() 结果:abc中文 把文件格式改成UTF-8: 结果:abc涓枃 显然,这里需要解码: # coding=gbk import codecs print open("Test.txt").read().decode("utf-8") 结果:abc中文 上面的test.txt我是用Editplus来编辑的,但当我用Windows自带的记事本编辑并存成UTF-8格式时, 运行时报错: Traceback (most recent call last):   File "ChineseTest.py", line 3, in <module>     print open("Test.txt").read().decode("utf-8") UnicodeEncodeError: ‘gbk‘ codec can‘t encode character u‘/ufeff‘ in position 0: illegal multibyte sequence
原来,某些软件,如notepad,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。 因此我们在读取时需要自己去掉这些字符,python中的codecs module定义了这个常量: # coding=gbk import codecs data = open("Test.txt").read() if data[:3] == codecs.BOM_UTF8: data = data[3:] print data.decode("utf-8") 结果:abc中文
(四)一点遗留问题 在第二部分中,我们用unicode函数和decode方法把str转换成unicode。为什么这两个函数的参数用"gbk"呢? 第一反应是我们的编码声明里用了gbk(# coding=gbk),但真是这样? 修改一下源文件: # coding=utf-8 s = "中文" print unicode(s, "utf-8") 运行,报错: Traceback (most recent call last):   File "ChineseTest.py", line 3, in <module>     s = unicode(s, "utf-8") UnicodeDecodeError: ‘utf8‘ codec can‘t decode bytes in position 0-1: invalid data 显然,如果前面正常是因为两边都使用了gbk,那么这里我保持了两边utf-8一致,也应该正常,不至于报错。 更进一步的例子,如果我们这里转换仍然用gbk: # coding=utf-8 s = "中文" print unicode(s, "gbk") 结果:中文

python中的print原理: 简单地说,python中的print直接把字符串传递给操作系统,所以你需要把str解码成与操作系统一致的格式。Windows使用CP936(几乎与gbk相同),所以这里可以使用gbk。 最后测试: # coding=utf-8 s = "中文" print unicode(s, "cp936") 结果:中文

python 遇到 syntaxerror: non-ascii character '/xd6' in file 我 教你解决 (python问题)(转)

时间: 2024-10-19 18:14:13

python 遇到 syntaxerror: non-ascii character '/xd6' in file 我 教你解决 (python问题)(转)的相关文章

python syntaxerror non ascii character xe5 in file

关于Python报错:SyntaxError: Non-ASCII character '\xe5' in file的解决方法 首先想到是Eclipse 中设置Pydev编码,尝试了下面操作 我们都知道Win7默认编码是GBK,而Ubuntu下面默认是utf-8,有时候我们的代码需要在两个平台下编辑,因此我们有必要设置一下eclipse的编码,当然这并不只用于pydev,android的adt也类似的. 只是主要设置3个地方,打开eclipse的windows-preferences: cont

SyntaxError: Non-ASCII character ‘\xe5’ in file 的解决办法

在Python脚本中包含中文的时候,会遇到编码错误.例如: 出现SyntaxError: Non-ASCII character ‘\xe5’ in file 的错误. 解决办法:是因为编码有问题,所以在脚本的开始加入以下代码即可 #!usr/bin/python # -*- coding: utf-8 -*- 原文地址:https://www.cnblogs.com/music-liang/p/11847919.html

python 编码问题:&#39;ascii&#39; codec can&#39;t encode characters in position 的解决方案

问题描述: Python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128),python没办法处理非ascii编码的,此时需要自己设置将python的默认编码,一般设置为utf8的编码格式. 查询系统默认编码可以在解释器中输入以下命令: Python代码

python 遇到 syntaxerror: non-ascii character问题

在源文件的第一行或第二行添加:(必须在第一行或者第二行)  # -*- coding:utf-8 -*- 详细信息如下面解释: Python对于decode&encode错误的默认处理方式为strict,也就是直接报错,而java使用replace的方式来处理了,因此java出现中文问题后会打印出很多"??".此外,Python的默认的encoding是ASCII,而java的默认encoding跟操作系统的encoding是一致的.在这一点上,我觉得java更为合理,这样对程

【Python】SyntaxError: Non-ASCII character &#39;\xe8&#39; in file

遇到的第一个问题: SyntaxError: Non-ASCII character '\xe8' in file D:/PyCharmProject/TempConvert.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 原因:注释里面出现了中文,而 Python 支持的 ASCII 码无中文. 解决方法:在头文件中添加如下代码: # -*- coding:

Python报错:SyntaxError: Non-ASCII character &#39;\xe5&#39; in file的解决方法

SyntaxError: Non-ASCII character '\xe5' in file 原因:Python默认是以ASCII作为编码方式的,如果在自己的Python源码中包含了中文(或者其他的语言,比如小日本的日语……),此时即使你把自己编写的Python源文件以UTF-8格式保存了:但实际上,这依然是不行的. 解决方法:在源码的第一行添加以下语句: # -*- coding: UTF-8 -*-     或者 #coding=utf-8 (注:此语句一定要添加在源代码的第一行) Pyt

关于Python报错:SyntaxError: Non-ASCII character &#39;\xe5&#39; in file的解决方法

Python默认编码错误SyntaxError: Non-ASCII character '\xe5'之解决方法在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息:SyntaxError: Non-ASCII character '\xe5' in file ******* 解决方法:python的默认编码文件是用的ASCII码,你将文件存成了UTF-8!!!(文件中存在中文或者其他语言,就会出现此问题!)解决办法很简单!!!在文件开头加入: # -*- coding: UTF

python编码错误的解决办法 SyntaxError: Non-ASCII character &#39;\xe5&#39; in file

[提出问题]. 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII character '\xe5' in file ******* ---------------------------------------------------------------------------------------------------------- [分析问题]. -----------------------------------

Python编码错误的解决办法SyntaxError: Non-ASCII character &#39;\xe5&#39; in file

[现象] 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII character '\xe5' in file ******* [原因] python的默认编码文件是用的ASCII码,而你的python文件中使用了中文等非英语字符. [解决办法] 在Python源文件的最开始一行,加入一句: # coding=UTF-8(等号换为”:“也可以) 或者 # -*- coding:UTF-8 -*- 转自[http://blog.cs