0

私の Django アプリは、エンコーディング ルールの適用が非常に緩いデータベースで動作します。emdash (Windows-1252 文字セットでは 0x97) のようなものを誰かがデータベースに保存すると、これが問題を引き起こします。Django アプリがそのデータを読み込んで utf-8 としてレンダリングしようとすると、0x97 が有効な utf-8 バイト シーケンスではないため (継続命令のように見える)、DjangoUnicodeDecodeError が発生します。

これらのエラーをキャッチして修正する賢い方法を知っている人はいますか? データベースはさまざまなアプリケーションからのデータを受け入れるので、それらが適切に機能し、適切なものだけをそこに入れるかどうかはわかりません。

4

1 に答える 1

0

データベースの照合順序と文字セットが、使用を計画または許可している文字をサポートしていることを確認してください。たとえば、MySQL では次のようなものが必要です。

CREATE DATABASE `mydb`
    DEFAULT CHARACTER SET utf8
    DEFAULT COLLATE utf8_general_ci;

MySQL で照合順序と文字セットを変更する方法の詳細については、以下を参照してください。

http://dev.mysql.com/doc/refman/5.0/en/charset-database.html http://dev.mysql.com/doc/refman/5.1/en/alter-database.html

于 2012-06-28T20:47:22.420 に答える