我非常困惑和困惑于我如何将带有不寻常字符的字符串(对于习惯于处理英国英文字符集的人)存储在字符串中。如何使用python正确地将utf-8字符插入到MySQL表中
这是我的例子。
我有这样的名字:Bientôt l'été
这是我创造了我的表:
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;
采用这个简化Python脚本我试图将字符串插入到一个MySQL数据库和表:
#!/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()
如果我然后尝试读取数据库中的名称,它将存储为:Bientôt l'été
我想让它看:Bientôt l'été
如何获取python脚本/ MySQL数据库来执行此操作?我认为这与字符集以及如何设置有关,但我无法找到一个简单的网页来解释这个问题,而没有任何技术术语。我一直在挣扎几个小时!
我已经看过这个,我看到character_set_server
设置为latin1
,但我不知道这是否是问题或如何改变它:
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/ |
+--------------------------+----------------------------+
据我所知'U“串”'是如何指定UTF8格式 – 2013-02-11 11:58:24
字符串如果这是Python 2,你不需要调用encode()。只有在'mystring'是'unicode'对象时才使用。由于您将源代码编码设置为UTF8,因此您的'mystring' *已经被编码*。 – 2013-02-11 12:38:22