我非常困惑,并通过我如何存储与特殊字符的字符串疑惑(的人谁是用来与英国英语字符集处理)在其中。
这里是我的榜样。
我有这样的名字: 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/ |
+--------------------------+----------------------------+