ngx_lua取memcache中文乱码问题

162 views
Skip to first unread message

jiangfei

unread,
May 31, 2012, 10:19:58 AM5/31/12
to openresty, age...@gmail.com
亦春哥,晚上好,请教个问题:
UTF-8编码的java代码存入memcache中的中文,telnent到memcache查询为乱码,但java代码从memcache取出正
常,而ngx_lua从memcache中取出的中文,和telnent取出的是一样的乱码,请教下有没有解决办法?

agentzh

unread,
Jun 1, 2012, 12:13:47 AM6/1/12
to jiangfei, openresty
Hello!

2012/5/31 jiangfei <liujiang...@gmail.com>:


> UTF-8编码的java代码存入memcache中的中文,telnent到memcache查询为乱码,但java代码从memcache取出正
> 常,而ngx_lua从memcache中取出的中文,和telnent取出的是一样的乱码,请教下有没有解决办法?

显然,你的 Java memcached 驱动在把数据存入 memcached 之前进行了特殊的序列化(根据 telnet
的输出)。而显然只有此驱动才知道如何反序列化。

lua-resty-memcached 库和 ngx_memc 模块(以及标准的 ngx_memcached
模块)都不会对值进行额外的序列化工作,所以其结果自然和 telnet 的输出一致。

有几种选择:

1. 查看你的 Java memcached 驱动的文档或实现,确定它所使用的序列化方法,然后在 Lua 中进行相同的反序列化操作。

2. 在你的 Java 一侧禁用其额外的序列化操作(如果有选项可以控制的话)。或者干脆换用其他客户端向 memcached 存入值。

Regards,
-agentzh

Reply all
Reply to author
Forward
0 new messages