代码之家  ›  专栏  ›  技术社区  ›  Thierry Lam

为什么python输出相同值的字符串和unicode不同?

  •  3
  • Thierry Lam  · 技术社区  · 15 年前

    我使用的是python 2.6.5,当我在python shell中运行以下命令时,我得到:

    >>> print u'Andr\xc3\xa9'
    André
    >>> print 'Andr\xc3\xa9'
    André
    >>>
    

    上面的解释是什么?考虑到“andr\xc3\xa9”,如何在HTML页面中正确显示上述值,使其显示andr_)而不是andr_)?

    3 回复  |  直到 15 年前
        1
  •  11
  •   interjay    15 年前

    '\xc3\xa9' 是Unicode字符的UTF-8编码 u'\u00e9' (也可指定为 u'\xe9' )所以你可以用 u'Andr\u00e9' u'Andr\xe9' .

    您可以从一个转换到另一个:

    >>> 'Andr\xc3\xa9'.decode('utf-8')
    u'Andr\xe9'
    >>> u'Andr\xe9'.encode('utf-8')
    'Andr\xc3\xa9'
    

    注意原因 print 'Andr\xc3\xa9' 给出的预期结果只是因为系统的默认编码是UTF-8。例如,在Windows上,我得到:

    >>> print 'Andr\xc3\xa9'
    André
    

    至于输出HTML,这取决于您使用的Web框架以及您在HTML页面中输出的编码。一些框架(例如Django)会自动将Unicode值转换为正确的编码,而其他框架则要求您手动转换。

        2
  •  1
  •   darelf    15 年前

    试试这个:

    >>> unicode('Andr\xc3\xa9', 'utf-8')
    u'Andr\xe9'
    >>> print u'Andr\xe9'
    André
    

    那可以回答你的问题。

    编辑:或查看以上答案

        3
  •  -2
  •   Uri    15 年前

    我不确定,但我想打印操作会应用不同的编解码器。可能是UTF-8和Unicode的问题。

    对于HTML,您需要使用Unicode的HTML语法对某些字符进行编码。 我认为巨蟒 codecs 模块可能会帮助您。