ホームページ >データベース >mysql チュートリアル >Python と MySQL を使用するときに Unicode とエンコーディングの問題に対処するにはどうすればよいですか?

Python と MySQL を使用するときに Unicode とエンコーディングの問題に対処するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-03 15:54:11196ブラウズ

How Can I Handle Unicode and Encoding Issues When Working with Python and MySQL?

Python および MySql での Unicode とエンコーディング

Unicode データを扱う場合、Python と MySQL では、次のようなエラーを避けるためにエンコーディングを慎重に検討する必要があります。あなたが遭遇したもの。このエラー メッセージは、JSON データ内の文字が MySQL テーブルに保存するために適切にエンコードされていないことを示唆しています。

この問題に対処するには、2 つのオプションがあります。

データベース テーブル:

  • Unicode 対応の文字セットを使用するようにデータベース テーブルを変更できます。 utf8mb4 や utf8 general_ci などの型を使用するように varbinary カラムを変更します。

Python でのエンコーディングの処理:

  • MySQLdb の connect() 関数を使用します。 charset='utf8' パラメータを使用して、エンコーディングを明示的に設定します。これにより、データがデータベースに送信される前に UTF-8 でエンコードされるようになります。
  • データの読み取りと挿入を担当する Python コードも UTF-8 エンコードを使用していることを確認してください。文字列をデータベースに挿入する前に、文字列に対して .encode('utf-8') メソッドを使用して UTF-8 に変換します。

次に、charset 引数を組み込んだ更新された Python コード セグメントを示します。

cur = conn.cursor()
cur.execute("SET NAMES utf8")
cur.execute("INSERT INTO yahoo_questions (question_id, question_subj, question_content, question_userId, question_timestamp,"
            +"category_id, category_name, choosen_answer, choosen_userId, choosen_usernick, choosen_ans_timestamp)"
            +"VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", 
            (row[2], row[5].encode('utf-8'), row[6].encode('utf-8'), quserId, questionTime, 
            categoryId, categoryName, qChosenAnswer.encode('utf-8'), choosenUserId, choosenNickName, choosenTimeStamp))

データベース変数も正しく設定されていることを確認してください。テーブルと接続の設定に一致するように、character_set_database 変数を utf8 に設定する必要があります。

以上がPython と MySQL を使用するときに Unicode とエンコーディングの問題に対処するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。