エンコーディングの問題で立ち往生したのは、ここ数週間で 2 回目です。私はすでにこの問題に非常に長い時間を費やしてきました。
これは私がやりたいことです:
1) コンピューターの MySQL テーブルからいくつかの行を選択します。
2) これらの行をテキスト ファイルに書き込みます。
3) テキスト ファイルを Amazon EC2 Ubuntu インスタンスに転送します。
4) テキスト ファイルの内容を MySQL データベースに書き込みます。
5) #4 で、Django にデータベースからいくつかの行を選択させます。
6) ウェブサイトに表示します。
ステップ 1 では、通常の SELECT ステートメントを作成しました。ステップ#2で、これを行いました:
file = codecs.open('commentsfordjango.txt', encoding = 'utf-8', mode='w')
file.write(fullcomment.decode('utf8') + '\n\n\n\n\n\n')
ステップ 2 の後、Windows で .txt ファイルを開くと、実際の中国語の文字がすべてエラーなしで表示されました。
ステップ 3 では、WinSCP を使用してファイルを転送しました。ステップ#4で、これを行いました:
file = open('/usr/local/src/blog/commentsfordjango.txt', 'r')
cursor.execute("INSERT INTO polls_poll (commenttext, pos, neu, neg) VALUES (%s, 0, 0, 0)", line)
ステップ 5 では、これをviews.py
: モデルに対応するオブジェクトを単純に返しました。私のモデルにはユニコード関数がありますが、デフォルトでそれを読んだので、それを呼び出しませんでした。オブジェクトを呼び出すときに既に呼び出されています。
ステップ 6 では、HTML ファイルの先頭に次の行があります。
<meta charset="utf-8" />
また、Apache エンコーディングのデフォルトを Unicode に変更しました。また、ステップ 4 の SQL データベースが Unicode であることも確認しました。
しかし、このすべての後でも、私の Web サイトには、人在åšï¼Œå¤©åœ¨çœ‹ã€ などの不可解で奇妙な文字が多数表示されます。
どんな助けでも大歓迎です - 私は .decode() と .encode('utf-8') を含む非常に多くのバリエーションを試しましたが、すでにこの問題にあまりにも長い時間を費やしました!