OK, les documents pour les liaisons libxml2 de Python sont vraiment ****
. Mon problème:La libxml2 de Python ne peut pas analyser les chaînes Unicode
Un document XML est stocké dans une variable de chaîne en Python. La chaîne est une instance d'Unicode et contient des caractères non-ASCII. Je veux analyser avec libxml2, en regardant quelque chose comme ceci:
# -*- coding: utf-8 -*-
import libxml2
DOC = u"""<?xml version="1.0" encoding="UTF-8"?>
<data>
<something>Bäääh!</something>
</data>
"""
xml_doc = libxml2.parseDoc(DOC)
avec ce résultat:
Traceback (most recent call last):
File "test.py", line 13, in <module>
xml_doc = libxml2.parseDoc(DOC)
File "c:\Python26\lib\site-packages\libxml2.py", line 1237, in parseDoc
ret = libxml2mod.xmlParseDoc(cur)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 46-48:
ordinal not in range(128)
Le point est la déclaration u"..."
. Si je le remplace par un simple ".."
, alors tout va bien. Malheureusement, cela ne fonctionne pas dans ma configuration, car DOC
sera définitivement une instance Unicode.
Quelqu'un at-il une idée de la façon dont libxml2 peut être amené à analyser les chaînes codées en UTF-8?
'u" ... "' est une ** chaîne unicode **, son codage interne n'est pas quelque chose qui vous intéresse, ce n'est pas UTF-8. – u0b34a0f6ae
S'applique également à urrllib2, etc. –