MySQL 如何才能存储 “🙏” 这个字符

2017-11-29 13:26:38 +08:00
 RangerWolf
测试 utf8 跟 utf8mb4 都不行

求解
3054 次点击
所在节点    问与答
19 条回复
voocel
2017-11-29 13:46:55 +08:00
```
/*
对 emoji 进行转义
*/
function emoji2str($str){
$strEncode = '';

$length = mb_strlen($str,'utf-8');

for ($i=0; $i < $length; $i++) {
$_tmpStr = mb_substr($str,$i,1,'utf-8');
if(strlen($_tmpStr) >= 4){
$strEncode .= '[[EMOJI:'.rawurlencode($_tmpStr);
}else{
$strEncode .= $_tmpStr;
}
}
return $strEncode;
}

/*
读数据后重新转换成 emoji 返回
*/
function str2emoji($str){
$str_arr = explode("[[EMOJI:", $str);
$new_str = "";

foreach ($str_arr as $key => $val){
$new_str .= $val;
}

return $new_str;
}
```
tomoya92
2017-11-29 13:49:02 +08:00
utf8mb4 是可以的,你估计编码还是没有处理好

![C24EAC35-FBCE-4CEC-9C1D-8FAD9BD67169.png]( https://i.loli.net/2017/11/29/5a1e4a37a2e9b.png)
sun019
2017-11-29 13:51:21 +08:00
utf8mb4 可以 现在系统上就是用的这个
SourceMan
2017-11-29 14:23:55 +08:00
utf8mb4 直接可以存呀。
edison111cry
2017-11-29 14:25:23 +08:00
我之前也遇到过 MYSQL 存储不了四字节的,设置了半天也不行,然后存的时候直接 base64_encode 一下存进去,取出来显示的时候 base64_decode 一下再显示
RangerWolf
2017-11-29 14:45:43 +08:00
@sun019 @SourceMan 有的表情符号是可以, 能帮忙试试看我标题的这个可以么?
RangerWolf
2017-11-29 14:46:17 +08:00
@voocel 感谢, 只不过我这个是存爬虫, 不涉及前端
我参考你的代码来改造一下。 再次感谢!
RangerWolf
2017-11-29 14:47:42 +08:00
@edison111cry 也是个办法 赞!
RangerWolf
2017-11-29 14:48:18 +08:00
@liygheart 我的环境跟你一样的。 能分享一下你是如何设置的么?
多谢!
SourceMan
2017-11-29 14:50:51 +08:00
abcbuzhiming
2017-11-29 15:14:58 +08:00
楼主你查一下你的库和表到底是不是 utf8mb4 的再说,很多人自以为用的是 utf8mb4 最后发现其实是 utf8
CloudnuY
2017-11-29 15:34:14 +08:00


q409195961
2017-11-29 15:35:34 +08:00
@edison111cry +1,最终用 Base64 编码
wsbnd9
2017-11-29 15:48:08 +08:00
utf8mb4 是可以的
zpf124
2017-11-29 15:54:28 +08:00
utf8mb4 是可以存的。
楼主你贴一下不能存的那个列的属性,看看你是不是改整个库的编码而并没有改列的编码,或者是 sql 工具导出时会导出列编码导致导入到新库列编码依旧是旧的。

如果你列编码属性是对的,那贴一些 mysql 版本号,让我们看看什么版本的 mysq 不支持 emoji。
tomoya92
2017-11-29 16:15:57 +08:00
@RangerWolf #9 你看看这个 http://tomoya92.github.io/pybbs/question/ 我服务器上就是按照这个配置的
8355
2017-11-29 18:21:08 +08:00
你看看字段字符集变了没
lyhiving
2017-11-29 18:24:51 +08:00
要看字段的编码
lhx2008
2017-11-29 18:30:12 +08:00
mb4,连的时候也要指定 mb4

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

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

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

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

© 2021 V2EX