⼩程序中获取⽤户nickName后关于emoji表情存⼊数据库及查
询的⽅法
刚开始写⼩程序,获取客户昵称,后来发现⽤户昵称是可以为emoji表情的,⽽Mysql数据库中是不⽀持直接将emoji表情直接存⼊数
据库的,后来在⽹站上找了⼀个⽅法将所有的昵称转变为Unicode编码存⼊数据库例如:ud83cudf52这个样⼦的字符串
具体⽅法为:
将str转变为Unicode未解码字符串:
publicstaticStringunicode(Stringsource){
StringBuffersb=newStringBuffer();
char[]source_char=Array();
Stringunicode=null;
for(inti=0;i
unicode=tring(source_char[i]);
if(()<=2){
unicode="00"+unicode;
}
("u"+unicode);
}
ng();
}
其中的source就是需要转换的字符串。
如果从数据库中获取需要将数据库中的Unicode未解码字符串转变为解码后的字符,具体⽅法为
⽅法⼀:
publicstaticStringdecodeUnicode(Stringunicode){
StringBuffersb=newStringBuffer();
String[]hex=("u");
for(inti=1;i<;i++){
intdata=nt(hex[i],16);
((char)data);
}
ng();
}
⽅法⼆:
publicstaticStringdecodeUnicode2(StringdataStr){
intstart=0;
intend=0;
finalStringBufferbuffer=newStringBuffer();
while(start>-1){
end=f("u",start+2);
StringcharStr=null;
if(end==-1){
charStr=ing(start+2,());
}el{
charStr=ing(start+2,end);
}
charletter=(char)nt(charStr,16);
(newCharacter(letter).toString());
start=end;
}
ng();
}
通过以上两种⽅法将数据库中的字符串转变成中⽂字符或者emoji表情
但是后来⼜发现⼀个问题,就是⽆法通过模糊查询或者精确查询'ud83cudf52'这样的字符串,具体原因似乎是Mysql会将''舍去,
所以lece*fromtablewherenick_namelike'%ud83cudf52%'这样查出来的是空的,如果需要查询这样的字符需要将''转变
成'_'来进⾏查询lece*fromtablewherenick_namelike'%_ud83c_udf52%'这样就可以查出⾃⼰想查询的信息了。
留此信息,仅供参考
本文发布于:2022-11-25 01:02:17,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/15367.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |