1

XML ファイルを読み取ってデータベースに書き込むスクリプトがあります。
ブラウザを介して実行すると(ビューを介して呼び出す)、正常に動作しますが
、コマンドを作成すると(./manage.py importxmlfile)、次のメッセージが表示されます。

UnicodeEncodeError: 'ascii' コーデックは位置 6 の文字 u'\xfc' をエンコードできません: 序数が範囲外です(128)

コマンドライン経由でインポートを呼び出すときにのみ発生する理由がわかりません..何かアイデアはありますか?

更新 オブジェクトを文字列に変換し、 を使用して DB (utf8 照合) に保存
しようとしています。 これにより、コマンドラインでのみ上記のエラーが発生します。lxml.etree._ElementUnicodeResultstr(result)

4

1 に答える 1

1

あ、使わないでstr(result)

代わりに、次のようにします。

result.encode('utf-8')

を呼び出すとstr(result)、python はデフォルトのシステム エンコーディング (通常は ascii) を使用して のバイトをエンコードしようとしますresult。の場合、これは壊れordinal not in range(128)ます。ascii コーデックを使用するのではなく、使用する.encode()コーデックを python に指示するだけです。

詳細については、Python Unicode HowToを参照してください。また、この関連する質問またはこの件に関する優れたプレゼンテーションも確認してください。

于 2013-06-09T18:52:20.990 に答える