猿问

在python3中正确使用unicode字符-强制utf-8编码

我在这里疯了。互联网和这个问题告诉我,在python 3.x中,默认编码为UTF-8。除此之外,我系统的默认编码是UTF-8。除此之外,我# -*- coding: utf-8 -*-在python 3.5文件的顶部。


仍然,python正在使用ascii:


# -*- coding: utf-8 -*-

mystring = "Ⓐ"

print(mystring)

向我打招呼:


SyntaxError: 'ascii' codec can't decode byte 0xe2 in position 7: ordinal not in range(128)

我也尝试过:print(mystring.encode("utf-8"))和.decode("utf-8")-一样。


我在这里想念什么?如何强制python停止使用ascii编码?


编辑:我知道抱怨position 7一个字符串似乎很奇怪,但这是我的实际MCVE和我得到的确切输出。上面是使用python shell,下面是在脚本中。两者都使用python 3.5.2。


编辑:由于我认为这可能是相关的:我要获取的字符串来自外部应用程序,并且未进行硬编码,因此我需要一种获取utf-8字符串并将其保存到文件中的方法。上面只是一个最小化和通用的示例。这是我的真实代码:


# the variables being a string that might contain unicode characters

mystring = "username: " + fromuser + " | printname: " + fromname

with open("myfile.txt", "a") as myfile:

  myfile.write(mystring + "\n")


UYOU
浏览 264回答 2
2回答

慕沐林林

Python 3.0的新功能说:所有文本均为Unicode;但是,编码的Unicode表示为二进制数据如果您想尝试输出utf-8,请参考以下示例:b'\x41'.decode("utf-8", "strict")如果要在字符串文字中使用unicode,请使用unicode转义符及其编码表示形式。例如:print("\u24B6")
随时随地看视频慕课网APP

相关分类

Python
我要回答