python中的中文和日文字符支持

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

如何正确阅读日语和汉字。 我正在使用python 2.5。输出显示为“E:\Test\?”


您应该强制字符串为类似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)