当前位置: 技术问答>linux和unix
Redis中的value包含中文显示的问题??
来源: 互联网 发布时间:2017-05-14
本文导语: 本地虚拟机linux环境 我在Redis中存储的value值是中文“马拉斯加” Shell下get获取后展示的结果为:xc2xedxc0xadxcbxb9xbcxd3 请问这是什么编码格式? 用PHP程序get的值为原中文,如何操作使在Shell下获取的value也为汉字? ...
本地虚拟机linux环境
我在Redis中存储的value值是中文“马拉斯加”
Shell下get获取后展示的结果为:xc2xedxc0xadxcbxb9xbcxd3
请问这是什么编码格式?
用PHP程序get的值为原中文,如何操作使在Shell下获取的value也为汉字?
我在Redis中存储的value值是中文“马拉斯加”
Shell下get获取后展示的结果为:xc2xedxc0xadxcbxb9xbcxd3
请问这是什么编码格式?
用PHP程序get的值为原中文,如何操作使在Shell下获取的value也为汉字?
|
出现问题的原因是因为:你在通过什么语言操作字符存入redis时,使用的编码是GBK,
而你的shell用的编码是utf-8 ((我猜,locale 查看),,,所以导致在shell中无法正常显示为汉字.
举两个shell命令的例子,你可以在你的终端下输入试试.
echo -e -n 'xe9xa9xacxe6x8bx89xe6x96xafxe5x8axa0'
显示为马拉斯加
再看一例:
echo -n '马拉斯加' | od -x
显示为
0000000 a9e9 e6ac 898b 96e6 e5af a08a
0000014
所以,你的解决方法:
1. 要么在存入redis时,我不知道你用的什么语言 python, php, c/c++? ,先将字符串转换为utf-8编码.然后存入redis.
2. 要么你就设置下你的linux系统的编码为GBK.. 帮你搜索到的一篇:http://www.huomo.cn/os/article-b6c4.html
我强烈建议用第一种方法..像python, php, c/c++转换下字符串的编码只需要用一个函数就行了. 而用第二种方法的话,系统可能发生各种意想不到的问题..
|
我也遇到了这个问题,不过现在解决了,只需要你在启动redis-cli时在其后面加上--raw参数即可启动后 再显示就正常了
|
终端与php程序使用的编码不一致,,所以没法简单的互操作.
php转换编码的函数:http://blog.163.com/long_alfred/blog/static/1882382792011717340455/
GBK -> UTF-8
UTF-8 -> GBK
mb_convert_encoding或者convert函数..
php不懂,你自己看吧.. 也就是在程序中增加一点操作,封装下就行了.
php转换编码的函数:http://blog.163.com/long_alfred/blog/static/1882382792011717340455/
GBK -> UTF-8
UTF-8 -> GBK
mb_convert_encoding或者convert函数..
php不懂,你自己看吧.. 也就是在程序中增加一点操作,封装下就行了.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。