5

プロジェクトを別のコンピューターに転送したところ、ビューの実行中にエラーが発生しました。

モデルの情報を取得していて、XMLGenerator を使用して XML に保存したいと考えています。

1台のコンピューターでは正常に動作し、「ユニコード」が返さtype()れますmodel.charField()

新しいコンピューターでは機能しませんでしtype()た。model.charField()戻り値は「str」です

動作中のコンピューターには Python 2.7.2 があります

動作していないコンピューターには Python 2.5.2 があります

そのため、動作していないコンピューターでは、XMLGenerator で処理できるユニコードを取得できませんでした。モデルによって提供される文字列に対して .decode("utf-8") を実行して問題を回避しようとしましたが、うまくいきました。

しかし、文字列のエンコーディングをどのように知ることができますか? データベースと同じエンコーディングを持っていると思いましたが、そうですか?

よろしくマーティン

4

2 に答える 2

5

mysqlの照合設定を確認していただけますか?それらも同じですか?django doc から:「多くの場合、このデフォルトは問題になりません。ただし、特定の列またはテーブルで大文字と小文字を区別して比較したい場合は、列またはテーブルを変更して utf8_bin 照合を使用します。主なものこの場合に注意すべきことは、MySQLdb 1.2.2 を使用している場合、Django のデータベース バックエンドは、データベースから受け取った文字フィールドに対して (Unicode 文字列ではなく) バイト文字列を返すことです。" django doc 照合設定を参照してください

于 2013-01-30T14:56:57.793 に答える
0

これがあるとしましょう:

a = unicode('a')
b = str('b')

簡単なチェックは次のとおりです。

print type(a)
print type(b)

それらを検証したい場合は、次のことができます。

if isinstance(a, str):

if isinstance(a, unicode):

コンテンツを型キャストする方法:

c = str(a)
d = unicode(b)
于 2013-01-30T14:59:01.063 に答える