我遇到了 unicode 字符有点被吞掉的问题。我有一个为我提供变量的配置文件location
。配置文件# -*- coding utf-8 -*-
在顶部,但file -bi config-file-name
告诉我编码是us-ascii
,无论我做什么(包括iconv
和recode
(linux)),它都拒绝改变它。
无论如何,我检索了一些带有 unicode 字符的数据(input_data
如下所示),当我直接查看数据时,这些数据看起来很好。然而,在下面的某个地方我咀嚼它:
def make_message(input_data):
messagestring = ''
if isinstance(input_data, list):
messagestring = '\n'.join(input_data)
elif isinstance(input_data, dict):
for key, val in input_data.items():
messagestring += key + '\n'
if isinstance(val, dict):
for newkey, newval in val.items():
messagestring += newkey + ' ' + newval + '\n'
else:
messagestring += val + '\n'
return messagestring
后来,我用以下方式调用它:
weather_msg = location + '\n' + make_message(message)
我认为我的配置文件的编码(“位置”来自哪里)迫使整个字符串变成 ascii,但这只是一个猜测,在我的谷歌搜索中,我无法弄清楚事情是否应该这样去工作。
我尝试了很多东西,包括尝试编码location
,并且我在谷歌上搜索了很多字符编码,但我无法找回我的 unicode 字符,我不知道我在哪里咀嚼它们。
谁能看到我在某个地方犯了一个明显的错误,将我的 unicode 数据强制转换为 ascii?或者,我可以将这一切都写到一个文件中,然后通过电子邮件发送,如果这是更聪明的方法并且它是否可以解决我的编码问题。这些信息足够短,我只是将其存储在内存中,但我愿意被告知这是一种愚蠢的做事方式。
感谢您的阅读和任何建议。