Sublime Text 的Unicode编码问题
2017-07-27 12:19
183 查看
【注】:下述操作过程是结合多种网络方法,然后自己实践的结果。写在这里,主要目的是加深记忆,也希望能帮助后来者
【问题】:使用Sublime Text 编译如下代码:print('中')时出错:
Traceback (most recent call last):
File "/Users/noiccy/Desktop/PythonCode/CodingProblem.py", line 1, in <module>
print('\u4e2d')
UnicodeEncodeError: 'ascii' codec can't encode character '\u4e2d' in position 0: ordinal not in range(128)
[Finished in 0.0s with exit code 1]
【原因】:ASCII 编码无法对 unicode 的中文进行编码,因此报错。Python 在 print
unicode 时真正涉及到的是另一组编码:stdin/stdout/stderr 的编码,也就是标准输入、标准输出和标准错误输出的编码。
运行如下代码:
import sys
print(sys.stdin.encoding)
print(sys.stdout.encoding)
print(sys.stderr.encoding)
print('中')
【输出】:
US-ASCII
US-ASCII
US-ASCII
Traceback (most recent call last):
File "/Users/noiccy/Desktop/PythonCode/CodingProblem.py", line 5, in <module>
print('\u4e2d')
UnicodeEncodeError: 'ascii' codec can't encode character '\u4e2d' in position 0: ordinal not in range(128)
[Finished in 0.1s with exit code 1]
【解决方法】:打开Python3.sublime-build文件,加上一行代码:"env": {"LANG": "en_US.UTF-8"},具体操作如下:
依次点击:Sublime Text->Preferences -> Browse Packages -> User -> Python3.sublime-build(注:后两项是文件路径,可能存在差异)
加上 env那行代码,如下:
{
"cmd": ["/Library/Frameworks/Python.framework/Versions/3.6/bin/python3", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env": {"LANG": "en_US.UTF-8"}
}
如上操作之后,再运行代码:
import sys
print(sys.stdin.encoding)
print(sys.stdout.encoding)
print(sys.stderr.encoding)
print('中')
【输出】:
UTF-8
UTF-8
UTF-8
中
[Finished in 0.1s]
参考网址:https://stackoverflow.com/questions/15166076/sublime-text-2-encoding-error-with-python3-build/15174760#15174760
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【后注】:下面的方法我曾尝试过,但是没有成功……放在这里,仅供参考
网上出现最多的方法是这样的:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print('中')
但是,我的编辑器仍然报错……
Traceback (most recent call last):
File "/Users/noiccy/Desktop/PythonCode/CodingProblem.py", line 2, in <module>
reload(sys)
NameError: name 'reload' is not defined
[Finished in 0.1s with exit code 1]
【问题】:使用Sublime Text 编译如下代码:print('中')时出错:
Traceback (most recent call last):
File "/Users/noiccy/Desktop/PythonCode/CodingProblem.py", line 1, in <module>
print('\u4e2d')
UnicodeEncodeError: 'ascii' codec can't encode character '\u4e2d' in position 0: ordinal not in range(128)
[Finished in 0.0s with exit code 1]
【原因】:ASCII 编码无法对 unicode 的中文进行编码,因此报错。Python 在 print
unicode 时真正涉及到的是另一组编码:stdin/stdout/stderr 的编码,也就是标准输入、标准输出和标准错误输出的编码。
运行如下代码:
import sys
print(sys.stdin.encoding)
print(sys.stdout.encoding)
print(sys.stderr.encoding)
print('中')
【输出】:
US-ASCII
US-ASCII
US-ASCII
Traceback (most recent call last):
File "/Users/noiccy/Desktop/PythonCode/CodingProblem.py", line 5, in <module>
print('\u4e2d')
UnicodeEncodeError: 'ascii' codec can't encode character '\u4e2d' in position 0: ordinal not in range(128)
[Finished in 0.1s with exit code 1]
【解决方法】:打开Python3.sublime-build文件,加上一行代码:"env": {"LANG": "en_US.UTF-8"},具体操作如下:
依次点击:Sublime Text->Preferences -> Browse Packages -> User -> Python3.sublime-build(注:后两项是文件路径,可能存在差异)
加上 env那行代码,如下:
{
"cmd": ["/Library/Frameworks/Python.framework/Versions/3.6/bin/python3", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env": {"LANG": "en_US.UTF-8"}
}
如上操作之后,再运行代码:
import sys
print(sys.stdin.encoding)
print(sys.stdout.encoding)
print(sys.stderr.encoding)
print('中')
【输出】:
UTF-8
UTF-8
UTF-8
中
[Finished in 0.1s]
参考网址:https://stackoverflow.com/questions/15166076/sublime-text-2-encoding-error-with-python3-build/15174760#15174760
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【后注】:下面的方法我曾尝试过,但是没有成功……放在这里,仅供参考
网上出现最多的方法是这样的:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print('中')
但是,我的编辑器仍然报错……
Traceback (most recent call last):
File "/Users/noiccy/Desktop/PythonCode/CodingProblem.py", line 2, in <module>
reload(sys)
NameError: name 'reload' is not defined
[Finished in 0.1s with exit code 1]
相关文章推荐
- 有关 Python 2 和 Sublime Text 中文 Unicode 编码问题的分析与理解
- 有关 Python 2 和 Sublime Text 中文 Unicode 编码问题的分析与理解
- 有关 Python 2 和 Sublime Text 中文 Unicode 编码问题的分析与理解
- 有关 Python 2 和 Sublime Text 中文 Unicode 编码问题的分析与理解
- java解析php函数json_encode unicode 编码问题【转】
- Python处理unicode编码的txt文件(Python中文处理)——解决to_excel()和to_csv()导出文件内容为空的问题
- python函数——编码问题——str与Unicode的区别
- 解决 iOS NSDictionary 输出中文字符”乱码”(Unicode编码)问题
- unicode及编码的规范问题
- 计算机编码问题ASCII,UTF-8,Unicode
- [资料收集]Unicode编码问题,编程方面的技巧集合
- python中的编码问题unicode, encode, decode
- 编码问题:UnicodeEncodeError: 'gbk' codec can't encode character u'\xa0' in position 148:
- Qt实现16进制unicode转utf-8以及国际音标编码问题
- unicode中的‘\xa0’字符在转换成gbk编码时会出现问题,gbk无法转换'\xa0'字符。
- Python编码问题:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(12
- 由__future__中unicode_literals引起的错误来研究python中的编码问题
- 编码问题 :Unicode utf8等之间的关系
- python2.7 的中文编码处理,解决UnicodeEncodeError: 'ascii' codec can't encode character 问题
- python编码问题 decode('unicode-escape')