【问题标题】:UTF-8 Insert Query With MYSQL not working on Deployment server使用 MYSQL 的 UTF-8 插入查询在部署服务器上不起作用
【发布时间】:2016-08-13 15:37:14
【问题描述】:

我创建了一个使用 UTF-8 数据库字符集的应用程序。使用 php 创建连接时,我正在执行mysqli_query($link, 'SET CHARACTER SET utf8')

localhost 上使用 SELECTINSERT 等都可以正常工作。我使用一些示例数据在 Web 上部署了应用程序并快速浏览了我看到的页面 UTF-8 字符很好。

当我通过提供的界面添加一些记录时,第二天客户打电话给我的数据显示为??????我很惊讶他是对的,但在本地主机上它工作正常。

经过一番搜索,我找到了多个答案,例如执行这些查询

  • set character_set_client='utf8'
  • set character_set_results='utf8'
  • set collation_connection='utf8_general_ci'
  • SET NAMES 'utf8'
  • 然后设置然后编码响应等

它们都不起作用,但这个mysqli_set_charset($link, 'utf8') 一个。

我的问题是

  1. 为什么它在 localhost 上工作,只有 INSERT or UPDATE 查询在部署后产生问题,但 SELECT 工作正常
  2. mysqli_set_charset($link, 'utf8')mysqli_query($link, 'SET CHARACTER SET utf8')有什么区别

【问题讨论】:

  • 另一个excellent answer
  • This 表示“问号”是由于没有 utf8 文本和 CHARACTER SET utf8 而产生的。
  • 哪些字符变成了问号?还有 utf8 vs utf8mb4 的问题。

标签: php mysql utf-8


【解决方案1】:

您的 localhost 数据库可能已使用 utf8 排序规则设置,但远程 Web 服务器的设置不正确。

基于 localhost 的开发的替代方法是使用 vagrant 虚拟机。您可以将其设置为尽可能接近生产。

mysqli_set_charset 不仅仅是设置客户端字符集。请参阅https://secure.php.net/manual/en/mysqlinfo.concepts.charset.php,该链接从mysqli_set_charset 的手册页链接到

【讨论】:

  • 我检查了两者都与utf8
  • 我还没有找到一个对mysqli_set_charset('utf8')很重要的角色。
猜你喜欢
  • 1970-01-01
  • 2017-07-11
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 2016-10-04
相关资源
最近更新 更多