php - 使用 PHP 将 latin1_swedish_ci 转换为 utf8

标签 php mysql character-encoding

我有一个数据库,其中包含 ♥•â—♥ Dhaka ♥•â—♥ (应该是 ♥• ●♥ Dhaka ♥•●♥) 因为我在创建数据库时没有指定排序规则。
现在我想修复它。我无法再次从最初获取数据的位置获取数据。所以我在想是否有可能在 php 脚本中获取数据并将其转换为正确的字符。
我已将数据库和字段的排序规则更改为 utf8_general_ci..

最佳答案

排序规则与字符集不同。排序规则仅用于文本的排序和比较(这就是其中有一个语言术语的原因)。实际字符集可能不同。

最常见的故障不在数据库中,而是在 PHP 和 MySQL 之间的连接中。连接的默认字符集通常是 ISO-8859-1。您需要在连接后首先更改它,使用 SQL 查询 SET NAMES 'utf-8';mysql_set_charset功能。

还要检查表的字符集。如果您没有指定 UTF-8 开头,这也可能是错误的(同样:这与排序规则不同)。但请确保在此处进行任何更改之前进行备份。 MySQL 会尝试转换前一个字符集,因此如果您实际上已将 UTF-8 数据保存在 ISO-8859-1 表中,则可能需要从备份中重新加载数据。

关于php - 使用 PHP 将 latin1_swedish_ci 转换为 utf8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6646949/

相关文章:

php - 在 PHP 中将时间和日期从一个时区转换为另一个时区

mysql - 使用NodeJS和MySQL无法通过id获取数据

php - 错误的字符编码 DOMDocument php

mysql - Python3、Pandas 和 MySQL 索引问题

mysql - 如何在 MySQL 控制台中使用环境变量

javascript - 将 javascript 生成的文档的字符集更改为 utf8

jsf - 提交表单后,输入中重新显示损坏的字符

javascript - 如何获取我网站中的国家/地区列表

php - 每次添加新行时更新列表

php - 将错误消息返回到数据库字段 : Yii2 and Swiftmailer