mysql 中ñ,í,ó 该设置什么编码保存?

2017-07-05 20:21:36 +08:00
 tianxiacangshen
utf8_general_ci 不行
utf8mb4_general_ci 也不行,其他 latin1 latin2 latin5 也都试了还是不行
2537 次点击
所在节点    PHP
14 条回复
cxbig
2017-07-05 20:32:58 +08:00
utf8_general_ci 绝对没有问题
你这恐怕是提交的编码不是 UTF-8 的,确保 PHP 这边的输入输出都是 UTF-8 才行
imydou
2017-07-05 20:41:18 +08:00
UTF8MB4_UNICODE_CI
we3613040
2017-07-05 20:48:09 +08:00
base64 存
zjp
2017-07-05 20:53:35 +08:00
编码 utf8mb4,排序规则 utf8mb4_unicode_ci
tianxiacangshen
2017-07-05 20:58:52 +08:00
@cxbig 获取到的数据是 iso-8859-15 编码,用 iconv 函数转换了一下编码,然后保存的,utf8_general_ci 和 UTF8MB4_UNICODE_CI 都将特殊字符变成了问号
tianxiacangshen
2017-07-05 21:05:02 +08:00
@cxbig
@imydou
@we3613040
@zjp

iconv 函数貌似不行,utf8_encode 可以
imydou
2017-07-05 21:08:28 +08:00
UTF8MB4_UNICODE_CI 应该可以,emoji 都能存
littleylv
2017-07-05 21:18:14 +08:00
utf8 肯定是可以的。你在存之前先看看是什么编码?
panyanyany
2017-07-05 21:41:07 +08:00
iconv 会调用系统自带的 iconv 命令,这个命令在不同系统下有不同的表现,而且在 *nux 系统下有巨坑。
php 最好是用 mb_convert_encoding,这是 php 自己实现的转换函数,性能稳定不会出错。
fuxkcsdn
2017-07-05 21:54:14 +08:00
数据库链接有设置编码吗?
$dbh = new PDO('mysql:dbname=testdb;host=127.0.0.1; charset=utf8', $user, $password);
tianxiacangshen
2017-07-05 21:56:19 +08:00
@littleylv
@fuxkcsdn
@panyanyany

之前是 iso-8859-15 编码,用 iconv 方式转换没效果,不知道什么原因,我还以为是 mysql 编码问题,换成 utf8_encode 就好了
frienmo
2017-07-05 22:22:05 +08:00
最近遇到的是带有 accent 的字母=原来的字母,后来查了是 collation 的问题
mingyun
2017-07-05 22:30:44 +08:00
@panyanyany 什么巨坑
winglight2016
2017-07-06 10:42:50 +08:00
这是西语字母啊,小撇是重音符号,字符集一定要保证输入输出一致,你直接用 mysql 命令行试试看写入读出就知道问题在哪里了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/373309

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX