我今天已将 MAMP Pro 从 3.x 更新到 4.0.6 版本,从那时起,我遇到了 MAC OSX 10.11 上的本地站点不再支持 UTF-8 字符的问题。
例如,我的 mysql 数据库中有“ü”字符,它应该在我的页面上显示“ü”字符,但它没有,而且当我保存“ü”字符时,它会将其保存为“ü”而不是数据库中的“ü”。
我正在使用mysqli类并使用get_charset函数检查mysql连接的字符集是否正确(utf8_general_ci)。 此外,本地数据库及其表具有正确的字符集(utf8_general_ci)。
我还在 php.ini 中添加了:
default_charset = "utf-8"
在我的 Apache http.conf 中,我添加了以下行
AddDefaultCharset utf-8
在我的 HTML-HEAD 文件中,有以下行:
meta http-equiv="Content-Type" content="text/html; charset=utf-8"
还是同样的问题,感谢您的帮助......
编辑: 正如 Roland Starke 和 junkfoofjunkie 在评论中所说,将数据库中的值保存为“ü”而不是“ü”是完全正确的(我长期以来都做错了)。事实证明我的MAMP 4配置是正确的,但我的MAMP 3配置是错误的。此外,我在 Amazon RDS 上运行的在线版本是错误的,没有配置为 UTF-8,而是配置为 Latin1,默认情况下 RDS 似乎总是使用拉丁语。我做了 wtravish 所说的纠正:Converting RDS database to UTF-8
我还必须更改内容,以下 sql 代码帮助了我:
UPDATE
table_name
SET
column_name
= REPLACE(column_name
,'ß','ß'),
column_name
= REPLACE(column_name
,'ä','ä'),
column_name
= REPLACE(column_name
,'ü','ü'),
column_name
= REPLACE(column_name
,'ö','ö'),
column_name
= REPLACE(column_name
,'Ä','Ä'),
column_name
= REPLACE(column_name
,'Ãœ','Ü'),
column_name
= REPLACE(column_name
,'Ö','Ö'),
column_name
= REPLACE(column_name
,'€','€'),
column_name
= REPLACE(column_name
,'°','°');
最佳答案
编辑 my.cnf 并将此行放在 [mysqld] 部分:
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
关于php - 更新到 MAMP PRO 4.0.6 后,UTF-8 无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40512160/