【发布时间】:2013-07-17 12:33:06
【问题描述】:
我有一个 Python 脚本,它使用 UTF-8 编码编写一些字符串。在我的脚本中,我主要使用str() 函数来转换为字符串。看起来是这样的:
mystring="this is unicode string:"+japanesevalues[1]
#japanesevalues is a list of unicode values, I am sure it is unicode
print mystring
我不使用 Python 终端,只使用标准的 Linux Red Hat x86_64 终端。我将终端设置为输出 utf8 字符。
如果我执行这个:
#python myscript.py
this is unicode string: カラダーズ ソフィー
但如果我这样做:
#python myscript.py > output
我得到了典型的错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 253-254: ordinal not in range(128)
为什么会这样?
【问题讨论】:
-
在你的问题中,你说“一些使用 UTF-8 编码的字符串”你怎么能确定这些字符串是用 UTF-8 编码的,你做了什么?
-
@venus.w 很抱歉,我帮不了你太多。我正在从以 UTF-8 编码的 DB 和 CSV 中读取字符串,但我只是假设编码确实是 UTF-8(因为如果我打印出来我可以正确读取日文字符),但它们可能是实际上编码在其他一些也允许日文字符的字符集中。我相信有python函数可以告诉你字符串的编码,甚至可以改变它。