我正在构建一个小的django 1.1应用程序(虽然我相信这个问题是特定于Python的)我已经开始使用命令来控制获取和分类数据的流程。我还希望使用第三个命令打印一种摘要。我正在使用macOS 10.12.3
我的问题来自于使用
获取文本数据并将其打印到控制台或文档> 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.'
丑陋的事情应该都是'å'。
这是引发的错误:
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"
试图看看这是否可能是由我的系统引起的(除非我误解了它的作用)。我没有把它写到任何文件中,认为它会在当前会话中持续存在。
是否以某种方式使用了错误的编码器?它可能是我的终端编码吗?如何将我的特殊字符写入终端和文件?字符串真的很难做到吗?
非常感谢任何帮助!!
答案 0 :(得分:0)
设置
export LC_ALL=no_NO.UTF-8
export LANG=no_NO.UTF-8
在我的.bash_profile中的现在允许我在终端中看到我想要的字符,并且它也成功地回显到文件中。