Python ascii utf Unicode

2024-09-30 06:29:21 发布

您现在位置:Python中文网/ 问答频道 /正文

当我用p = xml.parsers.expat.ParserCreate()解析此XML时:

<name>Fortuna D&#252;sseldorf</name>

字符解析事件处理程序包括u'\xfc'。在

如何将u'\xfc'变成{}?在


这是这篇文章的主要问题,剩下的只是进一步的(咆哮)思考

Python unicode是不是被破坏了,因为u'\xfc'将产生{}而没有其他结果? u'\xfc'已经是unicode字符串,因此再次将其转换为unicode是行不通的! 把它转换成ASCII也不起作用。在

我发现唯一有用的是:(这不是故意的,对吧?)在

^{pr2}$

用utf-8替换8859失败!那有什么意义?在

另外,Python unicode HOWTO的意义何在?-它只给出了失败的例子,而没有展示如何在实际操作中进行转换(尤其是在这里提出类似问题的ppl的猎犬)。在

Unicode并不神奇-为什么这里有这么多ppl有问题?在

unicode转换的根本问题非常简单:

一个双向查找表'\xFC'<;->;u'u'

unicode( 'Fortuna D\xfcsseldorf' ) 

为什么Python的创建者认为显示一个错误而不是简单地生成这个错误的原因是什么:u'Fortuna Düsseldorf'?在

为什么他们让它不可逆?公司名称:

 >>> u'Fortuna Düsseldorf'.encode('utf-8')
 'Fortuna D\xc3\xbcsseldorf'
 >>> unicode('Fortuna D\xc3\xbcsseldorf','utf-8')
 u'Fortuna D\xfcsseldorf'    

Tags: name错误unicodexmlpplutf意义parsers
1条回答
网友
1楼 · 发布于 2024-09-30 06:29:21

您的已经具有值。Python只是通过提供一个对ASCII友好的表示来简化调试。在解释器中回送值将得到对结果调用^{}的结果。在

另一个词,你的价值是混淆的。该表示被设计成可以安全地复制和粘贴,而不必担心其他系统如何处理非ASCII码位。因此,使用Python string literal syntax,任何不可打印和非ASCII字符都被\xhh\uhhhh转义序列替换。将这些字符串粘贴回Python字符串或交互式Python会话将生成完全相同的值。在

因此,ü已被\xfc取代,因为这是U+00FC LATIN SMALL LETTER U WITH DIAERESIS代码点的Unicode代码点。在

如果您的终端配置正确,您只需使用print,Python就会将Unicode值编码到终端编解码器中,从而使您的终端显示为非ASCII字形:

>>> u'Fortuna Düsseldorf'
u'Fortuna D\xfcsseldorf'
>>> print u'Fortuna Düsseldorf'
Fortuna Düsseldorf

如果您的终端配置为UTF-8,您也可以在显式编码后将UTF-8字节直接写入终端:

^{pr2}$

另一种方法是升级到python3;这里repr()只对没有可打印glyph的代码点使用转义序列(控制代码、保留代码点、代理项等;如果代码点不是空格,但属于^{}^{}常规类别,则对其进行转义)。新的^{} function仍然提供了Python2repr()行为。在

相关问题 更多 >

    热门问题