我最近把MariaDB数据库从Latin1转到了UTF-8。阅读一堆清单,仔细更新我的字符集、排序规则、my.cnf和php.ini。我在网站上的大部分数据输入都有php表单,但有时为了快速的小修改,进入Adminer或phpmyadmin这样的程序会更容易。
有了UTF-8,我想把导演阿方索·库隆的名字改成库隆,我去了他在Adminer的入口。编辑。Cuar[alt+0243]n。它在编辑框中显示为Cuarón。但是当我保存更改时,Adminer显示为CuarÃ3 n。好的。在Firefox中查看了页面信息。说页面的字符编码是UTF-8。所以一切都应该很好,对吧?
我找到了我的一个php数据输入表单,创建了一个Bob Cuarón,结果很好。
我通过SSH进入了服务器,启动了一个mysql命令行,并用Cuarón运行了一个update sql行,这很有效。但是试图在Adminer中更改它仍然给了我CuarÃ3 n.我安装了phpmyadmin(这给了我一些nginx配置的问题),但是我可以编辑他的名字…唉…它也给了我CuarÃ3 n.我安装了SQLbuddy并且…成功了…我可以进行更改,但是程序缺少一些我需要的东西,喜欢编辑搜索结果的能力。
我肯定我把一切都搞定了:
nginx.conf格式:
charset UTF-8;
我的cnf:
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
/etc/php5/fpm/php.ini文件
mbstring.language = Neutral
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.detect_order = auto
mbstring.substitute_character = none
default_charset = UTF-8
显示变量,如“%字符集%”;
+--------------------------+----------------------------+
| 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/ |
我看不出我会错过什么。Adminer和phpmyadmin都处理UTF-8,所以我不知道它为什么不工作。它在SQLBuddy中是现成的,但正如我所说,它缺少一些特性。
有什么想法我应该看看吗?
最佳答案
更新:原来我读过一篇关于UTF-8迁移的文章(抱歉,忘了加书签)让我更改了一些mbstring设置,使之远离PHP的默认值。管理员的人注意到了,一切都很好。请看他们的回答:
https://sourceforge.net/p/adminer/discussion/960418/thread/33595373/#42df