【发布时间】:2018-04-22 14:19:12
【问题描述】:
从数据库中读取我得到以下值
b'd\xe2\x80\x99int'
如何打印得到字符串d’int(注意这与d'int不同)?
我尝试使用print(b'd\xe2\x80\x99int'.decode('utf-8')),但出现错误:
UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in position 1: ordinal not in range(128)
编辑:感谢评论,我了解到问题不在我的 Python 代码中,而是在 emacs 中,我遇到的问题与此处描述的完全相同Unicode conversion issue using Python in Emacs
我将关闭问题
【问题讨论】:
-
您的代码对我有效,没有错误。
-
@Nisba 我们如何重现您的错误?这行
print(b'd\xe2\x80\x99int'.decode('utf-8'))不会引发任何异常 -
你说得对,在我的终端中它可以工作。如果我在 emacs 内的 shell 控制台上将其打印在文件中,我会在 emacs 中运行它时遇到错误。所以也许我在 emacs 中的 Python 进程必须被告知接受 unicode 字符串
-
@Nisba 将
PYTHONIOENCODINGenv.var 设置为utf-8在您的emacs 控制台或任何emacs 用于显示文本的python 进程上是否有任何区别? -
我正在尝试改变它的值
标签: python byte python-unicode