【发布时间】:2014-11-30 23:45:41
【问题描述】:
我一直在尝试通过 PHP INSERT 命令将带有特殊字符的单词导入 MySQL,但我要么得到 ???对于每个特殊字符或被截断后的所有内容。
我在互联网上阅读了很多内容,但似乎没有一个解决方案有效。
所以目前脚本中的Coruña,在SQL 中插入为Coru???a,代码如下:
$con=mysqli_connect("localhost","user",'pass','database');
$con->query("SET NAMES 'utf8' ");
$con->query("SET CHARACTER SET 'utf8'");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"INSERT INTO tbl_state (id, statecode, statename,country)
VALUES (1, 'A Coruña', 'A Coruña', 'ES')");
mysqli_close($con);
我的页面编码是content="text/html; charset=utf-8"。
我已经尝试在 MySQL 中对表和列使用 utf8_general_ci 和 utf8_spanish_ci 排序规则,但没有成功。
哪位高手遇到过这个问题,有什么问题吗?
谢谢!
【问题讨论】:
-
您尝试过使用 htmlspecialchars 吗? php.net/manual/en/function.htmlspecialchars.php
-
数据库排序规则本身是什么?您是否通过签入数据库客户端确认表和列是
utf8_general_ci? -
在
A Coruña上尝试utf8_encode或每个具有特殊键的文本。另外,您的数据库的排序规则是什么?是utf8吗? (仅当您的字符集为 ISO-8859-1 时才使用 utf8_encode,否则请尝试 iconv php.net/manual/en/book.iconv.php) -
注意:在开始使用连接之前,您需要检查连接失败。连接,尝试设置连接参数,然后检查连接是否正常工作是低音确认。
-
不要使用
htmlspecialchars()btw - 这是为了转义输出,而不是为了在数据库中存储东西。
标签: php mysql utf-8 insert special-characters