2012-03-27 8 views
2

昨年は、ダッシュボードとクライアントのAPIの両方を利用してdjangoサイトを構築しました。django + unicode定数エラー

これらは時にはユニコード情報(通常はMicrosoftキーボードと一重引用符!)をデータベースに格納しています。

それはすべてのために、この1つのインスタンスを変更するには罰金ですが、私は常に取得することは、新たなキャラクターが、私は「変換」していないことを追加され、このエラーのようなものです:/ XX /で

UnicodeDecodeError xxxxxは/ API/xxx.json

「ASCII」コーデックは位置0でバイト0xebをデコードすることはできません:ない範囲で序(128)

問題は、私が変換できるようにする必要があることを実際にこのユニコード(モデルから)をHTMLに変換します。

# if a char breaks the system, replace it here (duplicate line) 
text = unicode(str(text).replace('\xa3', '£')) 

ここではこの行を複製しますが、それ以外の場合は重複します。

を知っているので、私の髪の毛が裂けています。これはまっすぐです。

私の問題は新しいものではありませんが、他の場所で回答が見つかりませんでした。

+0

ここでは、ユニコードの痛みを修正するための良い紹介です:http://bit.ly/unipain –

答えて

0

私はtextがユニコードであると仮定します(は£文字のユニコードです)。

私はなぜそれが全くエンコードする必要があるのか​​わかりません、テンプレートの出力でテキストがutf-8に変換されるのを見て、すべてのブラウザがそれを完全に表示することができます。ある種のコード(残念なことにあなたのコードは、ASCIIを仮定しています)を暗黙的に変換している行の下に、別のポイントがあります。その場合

、あなただけのこの操作を行うことができます: £のようなHTML/XMLエンティティに非ASCII文字を変換し

text = text.encode('ascii', 'xmlcharrefreplace') 

を。

+0

heh ...この周りに非常に多くの方法を試してみました...コードの残りの部分の前にこの行を入れてください動作するようです!うわー!ありがとう – padajo

0

json-fileをUnicodeとしてデコードすることをJSONデコーダに伝えます。直接jsonモジュールを使用している場合、これは、このコードを使用して行うことができます。

json.JSONDecoder(encoding='utf8').decode(
    json.JSONEncoder(encoding='utf8').encode('blä')) 

JSON復号は、いくつかの他のモジュール(ジャンゴ、...)を介して行われた場合は、多分あなたにこの他のモジュールを介して情報を渡すことができますjsonのもの。

関連する問題