> 백엔드 개발 > PHP 튜토리얼 > mysql存入emoji表情现在为?

mysql存入emoji表情现在为?

WBOY
풀어 주다: 2016-06-23 13:44:28
원래의
1408명이 탐색했습니다.

mysql存入emoji表情现在为???.按网上的说法把mysql的字符集改为utf8mb4,还是无效,显示为乱码。。请问有人遇到过吗?


回复讨论(解决方案)

emoji 表情是扩展的 utf-16 编码
你可以贴出含有 emoji表情 的文字的 base64 编码串
看看能否帮你解决问题

emoji 表情是扩展的 utf-16 编码
你可以贴出含有 emoji表情 的文字的 base64 编码串
看看能否帮你解决问题


这个就是表情base64位保存后的数据。8J+YhPCfmIM= 。版*烦看看!.现在好多应用都支持这个表情输入,就是不知道怎么保存的。

应该说改用 utf8mb4 字符集就可以了,不知道你为什么不行
考虑到文字中 emoji 字符并不多,可以用正则替换一下在存入

$text = base64_decode('8J+YhPCfmIM=');echo $text = preg_replace_callback('/[\xf0-\xf7].{3}/', function($r) { return '@E' . base64_encode($r[0]);}, $text);
로그인 후 복사
로그인 후 복사
@E8J+YhA==@E8J+Ygw==

都会后逆转换一下就可以了
$s = preg_replace_callback('/@E(.{6}==)/', function($r) {return base64_decode($r[1]);}, '@E8J+YhA==@E8J+Ygw==');var_dump(base64_decode('8J+YhPCfmIM=') == $s);
로그인 후 복사
로그인 후 복사
bool(true)

应该说改用 utf8mb4 字符集就可以了,不知道你为什么不行
考虑到文字中 emoji 字符并不多,可以用正则替换一下在存入

$text = base64_decode('8J+YhPCfmIM=');echo $text = preg_replace_callback('/[\xf0-\xf7].{3}/', function($r) { return '@E' . base64_encode($r[0]);}, $text);
로그인 후 복사
로그인 후 복사
@E8J+YhA==@E8J+Ygw==

都会后逆转换一下就可以了
$s = preg_replace_callback('/@E(.{6}==)/', function($r) {return base64_decode($r[1]);}, '@E8J+YhA==@E8J+Ygw==');var_dump(base64_decode('8J+YhPCfmIM=') == $s);
로그인 후 복사
로그인 후 복사
bool(true)


是啊,很郁闷。网上都说只要设置为utf8mb4 就行,可我的就不行。mysql的版本是用的是5.6的。。。。,wampserver环境。会不会是环境问题?

楼主,我也遇到相同的问题了,请问你最后怎么解决的?

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿