1

webfactionでDjangoを使用してアプリを作成しようとしています。私は基本的にAmazonAPIをいじっていましたが、検索結果の1つに商標記号が含まれていると、それがテンプレートに渡されます...エラーがスローされます。エラーが発生します

Caught UnicodeEncodeError while rendering: 'ascii' codec can't encode character u'\u2122' in position 9: ordinal not in range(128)

そして、誰かが修正が何であるかを知っているかどうか疑問に思いました。

4

2 に答える 2

3

str()おそらく、Unicode データの一部を呼び出していることを意味します。str関数を呼び出して、その機能asciiをより適切に説明することができます。テンプレートは unicode データに完全に満足するため、Django を使用していることを考えると、問題は__unicode__メソッドなどにあると思われます。

Unicode はトリッキーなテーマです。Google でpython unicodeその感触をつかんでください。

コードを表示せずにさらに支援するのは難しいですが、要点は、アプリケーション全体で Unicode 文字列を試して使用することです! Python には、単純な文字列unicode()のメソッドとまったく同じように機能するメソッドがありstrますが、Unicode 文字列でも問題なく機能します。それを使用することをお勧めします。

于 2011-06-03T22:40:48.857 に答える
1

はい、u'\u2122'商標記号です。コードのどこかに、次のようにする必要があります。

  • その文字をサポートするコーデック(utf8、cp1250からcp1258など)を使用してUnicodeデータをエンコードする

また

  • 予期しない自動デコード(その文字をサポートしないASCIIを使用)を回避します。

どのアクションがどこで必要ですか?トレースバックを提供していないのでわかりません...質問を編集して完全なトレースバックを含め、読みやすいようにコードとしてフォーマットしてください。

于 2011-06-04T00:29:18.627 に答える