0

我已经阅读了将 MySQL 表/DBUTF8_general_ci从默认设置为 charset 的内容latin-1,我在将特定的 unicode 字符串从我的 Python 脚本插入 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)

记录输入数据库表而没有编码错误。我的问题是我有一个从这些记录运行的数据库驱动的 Intranet 站点(使用 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" />

4

2 回答 2

1

1.从 mysql_connect 中删除 "charset='utf8'" - 这是不正确的。

2.连接后尝试使用mysql_set_charset

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

附言

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

于 2013-06-15T01:12:23.090 回答
0

From @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.

and the use of:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
于 2013-06-15T01:56:41.533 回答