1
cxbig 2017-07-05 20:32:58 +08:00
utf8_general_ci 绝对没有问题
你这恐怕是提交的编码不是 UTF-8 的,确保 PHP 这边的输入输出都是 UTF-8 才行 |
2
imydou 2017-07-05 20:41:18 +08:00
UTF8MB4_UNICODE_CI
|
3
we3613040 2017-07-05 20:48:09 +08:00
base64 存
|
4
zjp 2017-07-05 20:53:35 +08:00 via Android
编码 utf8mb4,排序规则 utf8mb4_unicode_ci
|
5
tianxiacangshen OP @cxbig 获取到的数据是 iso-8859-15 编码,用 iconv 函数转换了一下编码,然后保存的,utf8_general_ci 和 UTF8MB4_UNICODE_CI 都将特殊字符变成了问号
|
6
tianxiacangshen OP |
7
imydou 2017-07-05 21:08:28 +08:00
UTF8MB4_UNICODE_CI 应该可以,emoji 都能存
|
8
littleylv 2017-07-05 21:18:14 +08:00
utf8 肯定是可以的。你在存之前先看看是什么编码?
|
9
panyanyany 2017-07-05 21:41:07 +08:00
iconv 会调用系统自带的 iconv 命令,这个命令在不同系统下有不同的表现,而且在 *nux 系统下有巨坑。
php 最好是用 mb_convert_encoding,这是 php 自己实现的转换函数,性能稳定不会出错。 |
10
fuxkcsdn 2017-07-05 21:54:14 +08:00 via iPhone
数据库链接有设置编码吗?
$dbh = new PDO('mysql:dbname=testdb;host=127.0.0.1; charset=utf8', $user, $password); |
11
tianxiacangshen OP @littleylv
@fuxkcsdn @panyanyany 之前是 iso-8859-15 编码,用 iconv 方式转换没效果,不知道什么原因,我还以为是 mysql 编码问题,换成 utf8_encode 就好了 |
12
frienmo 2017-07-05 22:22:05 +08:00
最近遇到的是带有 accent 的字母=原来的字母,后来查了是 collation 的问题
|
13
mingyun 2017-07-05 22:30:44 +08:00
@panyanyany 什么巨坑
|
14
winglight2016 2017-07-06 10:42:50 +08:00
这是西语字母啊,小撇是重音符号,字符集一定要保证输入输出一致,你直接用 mysql 命令行试试看写入读出就知道问题在哪里了
|