通过在PyCharm 2016.3.2中运行的Python 3.6脚本打开UTF-8编码文件
我对PyCharm和我正在开发的Python应用程序有一个非常奇怪的问题通过在PyCharm 2016.3.2中运行的Python 3.6脚本打开UTF-8编码文件,python,python-3.x,encoding,utf-8,pycharm,Python,Python 3.x,Encoding,Utf 8,Pycharm,我对PyCharm和我正在开发的Python应用程序有一个非常奇怪的问题 Pycharm是Pycharm社区版2016.3.2 项目口译员为:3.6.0 马科斯·塞拉是谁 因为我在谷歌上搜索解决方案已经有一段时间了,我想在这里问一下,没有任何建议的想法对我有帮助 我想使用以下代码打开UTF-8编码的文件: #!/usr/bin/env python3 import os, platform def read(file): f = open(file, "r") c
- Pycharm是Pycharm社区版2016.3.2
- 项目口译员为:3.6.0
- 马科斯·塞拉是谁
#!/usr/bin/env python3
import os, platform
def read(file):
f = open(file, "r")
content = f.read()
f.close()
return content
print(platform.python_version())
print(os.environ["PYTHONIOENCODING"])
content = read("testfile")
print(content)
代码在PyCharm中运行时崩溃。输出是
3.6.0
UTF-8
Traceback (most recent call last):
File "/Users/xxx/Documents/Scripts/pycharmutf8/file.py", line 14, in <module>
content = read("testfile")
File "/Users/xxx/Documents/Scripts/pycharmutf8/file.py", line 7, in read
content = f.read()
File "/usr/local/Cellar/python3/3.6.0_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)
我发现,在类似的情况下,建议人们在系统范围内将环境变量pythonionecoding
设置为utf-8:subrogateScape
(如您在上面的输出中所看到的)
export PYTHONIOENCODING=utf-8:surrogateescape
而且在PyCharm本身中(设置->构建->控制台->Python控制台->环境变量)
这没有任何效果。您还有其他建议吗?如果要读取UTF8文件,请指定编码:
def read(file):
with open(file, encoding='utf8') as f:
content = f.read()
如果要读取UTF8文件,请指定编码:
def read(file):
with open(file, encoding='utf8') as f:
content = f.read()
如果很难更改开放调用的编码,即它发生在库中,则可以在运行配置中更改此环境变量:
LC_CTYPE=en_US.UTF-8
资料来源:
如果很难更改开放调用的编码,即它发生在库中,则可以在运行配置中更改此环境变量:
LC_CTYPE=en_US.UTF-8
资料来源:
open
使用locale.getpreferredencoding(False)
猜测编码,因此我猜PyCharm设置的区域设置与您的终端不同。open
使用locale.getpreferredencoding(False)
猜测编码,我猜PyCharm设置的区域设置与您的终端不同。谢谢。这解决了我的问题。但是,我想知道为什么相同的代码在终端(工作)和PyCharm(不工作)中表现不同。正如@Mats comment所说,PyCharm和终端必须设置为不同的地区。该错误表明ASCII是默认值,Python在无法确定区域设置时选择ASCII。谢谢。这解决了我的问题。但是,我想知道为什么相同的代码在终端(工作)和PyCharm(不工作)中表现不同。正如@Mats comment所说,PyCharm和终端必须设置为不同的地区。该错误表明ASCII是默认值,Python在无法确定区域设置时选择ASCII。