UnicodeEncodeErrorで3時間食われる

PythonかGAEか知らないけど使えなさすぎる。

Amazon ECSのXMLをparseしようとしてエラーに遭遇した。

UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)

Amazonが返すXMLには当然日本語が入ってる。それをどういうわけかasciiと判断して処理しようとしてエラーになってるらしい。

コードの先頭行でencode: utf-8は指定してる。import sys; sys.setdefaultencodingは存在しない。xml.dom.minidom.parseStringに文字エンコーディングを指定する方法はない。

ていうか<?xml version="1.0" encoding="UTF-8"?>くらい読め。お前はIEか。

xml.dom.minidom.parseString(xmlstr) # error
xml.dom.minidom.parseString(xmlstr.decode("utf-8")) # error
xml.dom.minidom.parseString(xmlstr.decode("utf-8","utf-8")) # error

uxmlstr=unicode(xmlstr) #error
uxmlstr=unicode(xmlstr,"utf-8") #error

print "あ".encode("utf-8") #error
print "あ".encode("utf-8","utf-8")  #error
print "あ".decode("utf-8") #error
print "あ".decode("utf-8","utf-8") #error

print unicode("あ") # error
print unicode("あ","utf-8") # error
print u"あ" # error

print "あ" # ok

どーせーっちゅうねん。がーーーー

python google app engine
  • a2c2008-05-03 02:46:11

    hoge = str(xmlstr).decode('utf-8')
    とか
    hoge = '%s'%(xmlstr.decode('utf-8'))
    とかでどうでしょうか?

  • tt252008-05-07 19:25:50

    残念ながらどっちもUnicodeDecodeError: 'ascii' codec can't decode....なエラーが出ました。

    どうもPythonの内部エンコーディング?がasciiになってるのがすべての原因ぽいですが、GAEでどうやったら変更できるのかがわからず八方塞がりです。

名前

ほか