1
voocel 2017-11-29 13:46:55 +08:00 1
```
/* 对 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; } ``` |
2
tomoya92 2017-11-29 13:49:02 +08:00 1
utf8mb4 是可以的,你估计编码还是没有处理好
![C24EAC35-FBCE-4CEC-9C1D-8FAD9BD67169.png]( https://i.loli.net/2017/11/29/5a1e4a37a2e9b.png) |
3
sun019 2017-11-29 13:51:21 +08:00
utf8mb4 可以 现在系统上就是用的这个
|
4
SourceMan 2017-11-29 14:23:55 +08:00
utf8mb4 直接可以存呀。
|
5
edison111cry 2017-11-29 14:25:23 +08:00 1
我之前也遇到过 MYSQL 存储不了四字节的,设置了半天也不行,然后存的时候直接 base64_encode 一下存进去,取出来显示的时候 base64_decode 一下再显示
|
6
RangerWolf OP |
7
RangerWolf OP @voocel 感谢, 只不过我这个是存爬虫, 不涉及前端
我参考你的代码来改造一下。 再次感谢! |
8
RangerWolf OP @edison111cry 也是个办法 赞!
|
9
RangerWolf OP @liygheart 我的环境跟你一样的。 能分享一下你是如何设置的么?
多谢! |
10
SourceMan 2017-11-29 14:50:51 +08:00
|
11
abcbuzhiming 2017-11-29 15:14:58 +08:00
楼主你查一下你的库和表到底是不是 utf8mb4 的再说,很多人自以为用的是 utf8mb4 最后发现其实是 utf8
|
12
CloudnuY 2017-11-29 15:34:14 +08:00 1
|
13
q409195961 2017-11-29 15:35:34 +08:00
@edison111cry +1,最终用 Base64 编码
|
14
wsbnd9 2017-11-29 15:48:08 +08:00
utf8mb4 是可以的
|
15
zpf124 2017-11-29 15:54:28 +08:00 1
utf8mb4 是可以存的。
楼主你贴一下不能存的那个列的属性,看看你是不是改整个库的编码而并没有改列的编码,或者是 sql 工具导出时会导出列编码导致导入到新库列编码依旧是旧的。 如果你列编码属性是对的,那贴一些 mysql 版本号,让我们看看什么版本的 mysq 不支持 emoji。 |
16
tomoya92 2017-11-29 16:15:57 +08:00 1
@RangerWolf #9 你看看这个 http://tomoya92.github.io/pybbs/question/ 我服务器上就是按照这个配置的
|
17
8355 2017-11-29 18:21:08 +08:00
你看看字段字符集变了没
|
18
lyhiving 2017-11-29 18:24:51 +08:00 via Android
要看字段的编码
|
19
lhx2008 2017-11-29 18:30:12 +08:00 via Android
mb4,连的时候也要指定 mb4
|