我最近把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

09-04 11:17