我已经读过将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" />
答案 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" />