当我用p = xml.parsers.expat.ParserCreate()
解析此XML时:
<name>Fortuna Düsseldorf</name>
字符解析事件处理程序包括u'\xfc'
。在
如何将u'\xfc'
变成{
这是这篇文章的主要问题,剩下的只是进一步的(咆哮)思考
Python unicode是不是被破坏了,因为u'\xfc'
将产生{
我发现唯一有用的是:(这不是故意的,对吧?)在
^{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'
您的已经具有值。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字形:如果您的终端配置为UTF-8,您也可以在显式编码后将UTF-8字节直接写入终端:
^{pr2}$另一种方法是升级到python3;这里} 或^{} 常规类别,则对其进行转义)。新的^{} function 仍然提供了Python2
repr()
只对没有可打印glyph的代码点使用转义序列(控制代码、保留代码点、代理项等;如果代码点不是空格,但属于^{repr()
行为。在相关问题 更多 >
编程相关推荐