MySQL,Python - Latin-1 / UTF8编码

时间:2013-06-15 00:23:57

标签: php python mysql encoding utf-8

我已经读过将MySQL表/ DB设置为UTF8_general_ci charset的默认latin-1,其中我从Python脚本中将特定的unicode字符串插入MySQL表时出错。我删除了整个数据库,并用以下内容重新创建:

CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;

然后我在这个模式中创建了我的表,附加了:

ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

我有一个使用MySQLdb驱动程序加载到表中的Python脚本,我在脚本开头指定了字符集:

connectToDb = mdb.connect(host="localhost",
                          user="me",
                          passwd="me",
                          db="me",
                          charset="utf8",
                          use_unicode=True)

记录无需编码错误的数据库表格。我的问题是,我有一个数据库驱动的内部网站点(使用PHP脚本来创建表项)从这些记录运行,<td>中的一些记录在我使用Chrome时包含字形网页。

我在页面的HTML中指定了我的PHP连接:

$connect = mysql_connect("localhost",$usrname,$password,"charset='utf8'");

特别是GB“£”符号导致攻击(当我检查PHPmyadmin时,我可以看到它是GUI中的“£”符号。)

我不知道原因是什么,你能帮忙吗?感谢。

编辑:HTML页面还声明了以下内容:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

2 个答案:

答案 0 :(得分:1)

1.删除&#34; charset =&#39; utf8&#39;&#34;来自mysql_connect - 它不正确。

2.连接后尝试使用mysql_set_charset

$connect = mysql_connect('localhost', $user, $password);
mysql_set_charset('utf8', $connect);

PS

mysql_ *函数已弃用,请勿使用它们。考虑切换到PDO或MySQLi。

答案 1 :(得分:0)

来自@guybennet:replacing characters with UTF-8 after using mysql_set_charset('utf8') function

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'");
and use utf-8 charset in all of your pages.

和使用:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />