python中的中文和日文字符支持
如何正确阅读日语和汉字。 我正在使用python 2.5。输出显示为“E:\Test\?”python中的中文和日文字符支持,python,python-2.5,Python,Python 2.5,如何正确阅读日语和汉字。 我正在使用python 2.5。输出显示为“E:\Test\?” 您应该强制字符串为类似unicode的object path = ur"E:\Test\は最高のプログラマ" 与2.5相关的字符串文本文档位于 编辑:我不确定2.5中的对象是否为unicode,但文档确实声明将处理\uxxx[XXXX],并且字符串将为“unicode字符串”。请阅读;它解释了如何在Python代码中处理和包含非ASCII文本 如果要在代码中包含日文文本文字,您有几个选项: 使用uni
您应该强制字符串为类似unicode的
object
path = ur"E:\Test\は最高のプログラマ"
与2.5相关的字符串文本文档位于
编辑:我不确定2.5中的对象是否为unicode
,但文档确实声明将处理\uxxx[XXXX]
,并且字符串将为“unicode字符串”。请阅读;它解释了如何在Python代码中处理和包含非ASCII文本
如果要在代码中包含日文文本文字,您有几个选项:
- 使用unicode文字(创建
unicode
对象而不是字节字符串),但任何非ascii码点都由unicode转义字符表示。它们的形式为\uabcd
,因此有一个反斜杠、一个u
和四个十六进制数字:
ru = u'\u30EB'
将是一个字符,片假名'ru'代码点('ル').
- 使用unicode文字,但以某种形式的编码包含字符。您的文本编辑器将以给定的编码(例如UTF-16)保存文件;您需要在源文件的顶部声明该编码:
# encoding: utf-16
ru = u'ル'
在哪里ル' Python 2文件的默认编码是ASCII,因此通过声明编码,可以直接使用日语
- 使用字节字符串文字,准备好编码。通过其他方式对代码点进行编码,并将其包含在字节字符串文字中。如果您要做的只是以编码形式使用它们,这应该很好:
ru = '\xeb\x30' # ru encoded to UTF16 little-endian
我编码了ル' 改为UTF-16 little-endian,因为这是默认的Windows NTFS文件名编码
下一个问题是您的终端,Windows控制台因不支持许多现成的字符集而臭名昭著。您可能希望将其配置为处理UTF-8。有关详细信息,请参阅,但您需要在控制台中运行以下命令:
chcp 65001
要切换到UTF-8,您可能需要切换到能够处理代码点的控制台字体(可能是Lucida?)。有两个独立的问题:
如果对表示文本的数据使用非ascii字符和Unicode文字,则应指定Python源代码编码,例如:
# -*- coding: utf-8 -*-
path = ur"E:\Test\は最高のプログラマ"
但如果设置了正确的字体,则只需:
print path
可能有用
无论您的控制台是否可以显示路径,都可以将Unicode路径传递给文件系统函数,例如:
entries = os.listdir(path)
不要在ByTestRing上调用.encode(char\u enc)
,而是在Unicode字符串上调用它。
不要调用.decode(字符加密)
在Unicode字符串上,改为在bytestrings上调用它。Python 2.5支持这一点,但Unicode对象只是图片的一小部分。…@J.F.Sebastian:是的,我在这里和那里看到了关于这个问题的提示,包括我链接到的SO问题。感谢这个bug链接,这很好,它将回答您所有的问题。F点击链接。
entries = os.listdir(path)