【问题标题】:Special characters like ñ á é í ó ú are imported as ??? in MySQLñ á é í ó ú 等特殊字符导入为 ???在 MySQL 中
【发布时间】: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_ciutf8_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


【解决方案1】:

好的,所以我没有尝试通过 PHP 脚本输入数据,而是直接从 phpMyAdmin 使用 INSERT 查询插入数据。

为了在 PHP 中输​​出正确的数据(没有正方形或问号),我在建立连接时添加了这个:

$mysqli->query("SET NAMES 'utf8'");

一切都很好!

感谢您的帮助,如果有人仍然找到有关如何通过 PHP 脚本执行此操作的答案,那将会很有趣。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2019-09-26
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多