Mac sublime 编译Python UnicodeEncodeError: 'ascii' codec can't encode characters in positi

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mac sublime 编译Python UnicodeEncodeError: 'ascii' codec can't encode characters in positi相关的知识,希望对你有一定的参考价值。

  刚学Python,想打印个“hello 张林峰”,代码如下:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

print(hello 张林峰)

  用sublime运行一下,竟然报错???

Traceback (most recent call last):
  File "/Users/zhanglinfeng/Documents/Python/\u7ec3\u4e60/\u5b57\u7b26\u4e32\u7f16\u7801\u53ca\u8f93\u51fa\u683c\u5f0f.py", line 4, in <module>
    print(hello \u5f20\u6797\u5cf0)
UnicodeEncodeError: ascii codec cant encode characters in position 6-8: ordinal not in range(128)
[Finished in 0.1s with exit code 1]
[cmd: [/Library/Frameworks/Python.framework/Versions/3.6/bin/python3, -u, /Users/zhanglinfeng/Documents/Python/练习/字符串编码及输出格式.py]]
[dir: /Users/zhanglinfeng/Documents/Python/练习]
[path: /usr/bin:/bin:/usr/sbin:/sbin]

  难道学一门新语言,第一个程序非得是“hello Word”?试了下,特么hello Word还真对了。莫非是中文问题?可我明明写了# -*- coding: utf-8 -*-的啊。去终端运行下这个py文件,特么终端竟然对的,可以打印hello 张林峰了。什么情况啊?

  网上搜了下,哟呵,报这个错的人还挺多啊。大概有以下几种答案:

  1.是因为默认的编码是ascii,要把需要自己将python的默认编码设置为utf8的编码格式

  查询系统默认编码可以在解释器中输入以下命令:

>>>import sys   
>>>sys.getdefaultencoding()  

  设置默认编码时使用:

>>>sys.setdefaultencoding(utf8) 

  然而我的Python默认编码就是utf8,所以这个答案pass掉了。

  2.认为是print的的局限性

  需要在前面加上下面代码

import io  
import sys  
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding=utf8) #改变标准输出的默认编码

  我的就是第二个答案解决的。

以上是关于Mac sublime 编译Python UnicodeEncodeError: 'ascii' codec can't encode characters in positi的主要内容,如果未能解决你的问题,请参考以下文章

sublime在Macos系统下配置编译环境,实现CTRL+B快速编译

Mac系统 Sublime Text 3 控制台无法输出中文该怎么处理

mac系统下怎样利用好sublime text 2编写html,css,js代码

Mac环境下Sublime 3 配置 Anaconda 实现python自动补全

Python 学习之中的一个:在Mac OS X下基于Sublime Text搭建开发平台包括numpy,scipy

Sublime配置Python编译环境