Wie Sie richtig legen Sie utf-8-Zeichen in eine MySQL-Tabelle mithilfe von python

Ich bin sehr verwirrt und verwundert, wie Speichere ich strings mit Sonderzeichen (für jemanden, der verwendet wird, um den Umgang mit UK-englischen Zeichensatz) in Ihnen.

Hier ist mein Beispiel.

Habe ich diese Namen: Bientôt l'été

Dies ist, wie ich meine Tabelle:

CREATE TABLE MyTable(
    'my_id' INT(10) unsigned NOT NULL,
    'my_name' TEXT CHARACTER SET utf8 NOT NULL,
    PRIMARY KEY(`my_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Mit diesem vereinfachten python-script, das ich versuche, legen Sie die Zeichenfolge in einer MySQL-Datenbank und-Tabelle:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import MySQLdb

mystring = "Bientôt l'été"

myinsert = [ { "name" : mystring.encode("utf-8").strip()[:65535], "id" : 1 } ]

con = None
con = MySQLdb.connect('localhost', 'abc', 'def', 'ghi');
cur = con.cursor()
sql = "INSERT INTO 'MyTable' ( 'my_id', 'my_name' ) VALUES ( %(id)s, %(name)s ) ; "
cur.executemany( sql, myinsert )
con.commit()
if con: con.close()

Wenn ich dann versuche, den Namen zu Lesen, die in der Datenbank gespeichert als: Bientôt l'été

Will ich es Lesen: Bientôt l'été

Wie bekomme ich das python-script/MySQL-Datenbank zu tun? Ich denke, dass dies etwas zu tun mit dem Zeichensatz, und wie es gesetzt ist, aber ich kann nicht finden, eine einfache web-Seite, die erklärt, ohne Fachchinesisch. Ich habe gekämpft, mit diesem für Stunden!

Habe ich angeschaut, und ich sehe character_set_server wird als latin1 aber ich weiß nicht, ob das das problem ist oder wie es zu ändern:

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
  • soweit ich weiß u"string" ist, wie Sie geben Sie eine Zeichenkette im utf8-format
  • Ist dies Python 2, Sie brauchen nicht zu rufen encode(). Nur verwenden, wenn mystring ist ein unicode Objekt. Da Sie die source-code-Codierung auf UTF8, Ihre mystring ist bereits codiert.
InformationsquelleAutor user1464409 | 2013-02-11
Schreibe einen Kommentar