0

SQLAlchemyを使用して、utf-8 でエンコードされたファイルからデータを読み取り、それらを MySQL データベースに入れています。sqlalchemy を使用してデータにアクセスしている限り、すべて正常に動作します。この場合、エンコーディングは完全に正しいです。

私の問題は、Python で書かれていない別のアプリから同じデータにアクセスする必要があることです。この場合、エンコーディングが正しく機能していません。mysql クライアントで表示している場合も正しくありません。

誰かが解決策を見つけるのを手伝ってくれますか?

4

1 に答える 1

1

構成が次の条件を満たしていることを確認する必要があります。

  • MySQL データベースは、テーブルと列にUTF-8を使用するように構成されています。
  • すべてのクライアント接続はUTF-8を使用するように構成されています。SQLAlchemyの場合、これは次の方法で実現できます。

    # set client encoding to utf8; all strings come back as unicode
    create_engine('mysql+mysqldb:///mydb?charset=utf8')
    
  • ではなく、 SQLAlchemyUnicodeの型に使用します。 String

上記の条件が満たされている場合、再度、すべてのクライアント接続がUTF-8文字セットを使用するように構成されていること、およびすべてのクライアントが UTF-8 バイト文字列を内部 Unicode 表現にデコードしていることを確認してください。実装された用途 (正しく構成されていれば、ドライバー/コネクターはこれを自動的に処理する必要があります) を使用する場合、問題は発生しないはずです。

于 2012-10-26T00:18:56.903 に答える