php - 更新到 MAMP PRO 4.0.6 后,UTF-8 无法正确显示

标签 php mysql encoding utf-8 character-encoding

我今天已将 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/

相关文章:

php - 在 joomla 网站中更改图像路径时出错

php - file_put_contents , 无法打开流 : No such file or directory Laravel

mysql - 当调用 Zend_Db::update() 和 insert() 时,将值设置为 null

python - chardet 在 python 3 中运行不正确

c++ - UTF-8 和 TinyXML

php - 单击注册按钮时如何使来自服务器的响应自动显示在 TextView (outlet3)上

php - 帮助从 MySQL 数据库中获取文本到下拉菜单中

python - 名称错误 : global name 'message' is not defined

php - mysql php从2个表中选择具有相同字段名称的字段

Java程序不打印西里尔字符,只打印问号