我正在构建一个Django 1.1应用程序(尽管我相信这个问题是针对Python的),我已经使用命令来控制流获取和分类数据。我也希望使用第三个命令打印一个摘要。我使用的MacOS 10.12.3Python 3.6.1 - 打印字符串作为人类可读文本,特殊字符
我的问题来自于获取文本数据,并将其打印到控制台,或在控制台中使用
> or >>
的文件。
我使用Python 3.6.1
我使用的Tweepy API的别名运行这些脚本,但应该希望是不相关的。
这些片段应该说明我希望能解决这个问题:
print(type(data))
print(type(data.text))
try:
print(data.text)
except UnicodeEncodeError:
print("no printing today :(")
print(type(data.text.encode('UTF-8')))
print(data.text.encode('UTF-8'))
此输出:
<class 'tweepy.models.Status'>
<class 'str'>
no printing today :(
<class 'bytes'>
b'kontroll p\xc3\xa5 ... v\xc3\xa5pen.'
的丑陋的东西存在都应该是字符“a”。
这是将被抛出的错误:
UnicodeEncodeError: 'ascii' codec can't encode character '\xe5' in position 223: ordinal not in range(128)
它说 'ASCII' 编解码器,但这样做(在我的Python 3.6.1脚本):
print(sys.getdefaultencoding())
输出:
utf-8
跑步
print(sys.getdefaultencoding())
再次在Python 2.7.10输出:
ascii
所以抛出的错误匹配什么2.7.10输出。我不低估我可能是错的什么默认编码器确实
我也曾尝试
export LOCALE="no_NB.UTF-8"
,试图看看是否可以通过我的系统造成的(除非我的可能性误解这是什么)。我没有把它写到任何文件中,认为它会在当前会话中持续存在。
是否错误地使用了错误的编码器?它可能是我的终端编码?我怎样才能将我的特殊字符写入终端和文件?弦真的很难得到正确吗?
任何帮助非常感谢!
问题很可能是您的*终端仿真程序*不支持Unicode字符,或者设置为使用ASCII编码,因此当您打印*时出现'UnicodeEncode'错误。当你编码一个字符串时,它会返回一个字节对象,它总是会在ascii序数范围外有一个“难看的”表示形式,除非你解码它*(或者你的情况,不要编码它)。 –
你确定这个''no_NB.UTF-8“'是一个可用的语言环境吗?尝试'locale -a | grep“no_NB.UTF-8”'在你的shell中。我无法在我的机器上找到它,(osx 10.12.4),但我确实找到了'no_NO.UTF-8' –