我的问题是,直接通过 PHP 编写的内容是正确重音的,但是当重音单词来自 MySQL 时,字母会像这样 �.
我尝试使用html charset
as ISO-8859-1
它修复了 MySQL 字母,但破坏了其他字母。解决这一切的一种方法是设置我的.php
文件到ISO-8859-1
,但我做不到,我需要用它utf-8 encode
.
我能做些什么?
目前解决方案:包括mysqli_set_charset($link, "utf8");
在查询之前(只需为每个建立的连接执行一次)。我仍在服务器上寻找最终的解决方案,而不是在客户端上。
EDIT:
mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
mysql> show variables like "character_set_database";
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| character_set_database | utf8 |
+------------------------+-------+
1 row in set (0.00 sec)
mysql> show variables like "collation_database";
+--------------------+-----------------+
| Variable_name | Value |
+--------------------+-----------------+
| collation_database | utf8_general_ci |
+--------------------+-----------------+
1 row in set (0.00 sec)
这些是我的数据库的值,但我仍然无法正确。
EDIT2:
<meta charset="utf-8">
...
$con = mysqli_connect('localhost', 'root', 'root00--', 'eicomnor_db');
$query = "SELECT * FROM table";
$result = mysqli_query($con, $query);
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['nome'] . "</td>";
echo "</tr>";
}
mysqli_close($con);
这是 PHP 代码。
首先,不要尝试按照 ISO-8859-1 的方向修改 php 文件,这会导致倒退,并可能导致浏览器的兼容性问题。相反,您希望自下而上遵循 utf-8 的路径。
这
最容易检查的事情是确保您将 html 作为 utf-8 提供:AddDefaultCharset utf-8
在你的 apache 配置中可能会有所帮助,
和<meta charset="utf-8">
在你的 html header 中也会。
要检查的第二件事是确保 mysql 连接和排序规则
使用 utf-8:http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html or http://docs.moodle.org/23/en/Converting_your_MySQL_database_to_UTF8 http://docs.moodle.org/23/en/Converting_your_MySQL_database_to_UTF8
这
最后也是最烦人的一步是转换实际中的任何数据
数据库转为utf-8。首先使用标准 mysql 转储备份您的数据!有一些技巧可以简化此过程,方法是将数据库创建为 utf-8 转储,然后使用正确的排序规则将其放回到系统中,但请注意,这是一个微妙的过程,并确保您有可靠的备份先一起工作吧!http://docs.moodle.org/23/en/Converting_your_MySQL_database_to_UTF8 http://docs.moodle.org/23/en/Converting_your_MySQL_database_to_UTF8是该过程的一个很好的指南。
祝你好运!旧数据库的字符集问题通常比最初出现的情况要复杂得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)