|
表情emoji 表情保存至数据库 部分将会保错
解决这个有好多种方式
mySQL 5.5 以上才支持这种,低版本怎么处理呢,
网上很多教程,也可以bese64 也可以转编码,但是在取出的时候 往往会被转义啥的
我做了一下一些处理,
表情emoji 由于是二进制的
我用了一个函数将其转成16进制
可以看到前面名字有个符号
$Data=array(
"accountName"=>bin2hex($accountName),
);
保存完后将会是16进制 f09f928b4a65727279
取出的时候 我写了一个自定义函数
public static function hex2bin($h){
if (!is_string($h)) return null;
$r='';
for ($a=0; $a<strlen($h); $a+=2) { $r.=chr(hexdec($h{$a}.$h{($a+1)}));
}
return $r;
}
取出的时候 将二进制直接使用这个函数就行
hex2bin(accountName);
这样将会得到结果
在其中我遇到了一个问题,就是数据库有老数据怎么处理
我使用了正则
if (preg_match("/(?i)^[0-9a-f]+$/",$UserName)) {
$UserName=PublicFun::hex2bin($UserName);
}
如果有好的方法 欢迎补充
枯叶原作
|
|