如何在redis中保存和检索带有重音符号的字符串?

如何在redis中保存和检索带有重音符号的字符串?,redis,Redis,我无法在我的redis db中设置和检索带有重音符号的字符串。 带有重音符号的字符是经过编码的,我如何将它们恢复到设置的位置 redis> set test téléphone OK redis> get test "t\xc3\xa9l\xc3\xa9phone" 我知道已经有人问过了 (http://stackoverflow.com/questions/6731450/redis-problem-with-accents-utf-8-encoding)但是没有详细的答案。Re

我无法在我的redis db中设置和检索带有重音符号的字符串。
带有重音符号的字符是经过编码的,我如何将它们恢复到设置的位置

redis> set test téléphone
OK
redis> get test
"t\xc3\xa9l\xc3\xa9phone"
我知道已经有人问过了
(http://stackoverflow.com/questions/6731450/redis-problem-with-accents-utf-8-encoding)但是没有详细的答案。

Redis服务器本身将所有数据存储为二进制对象,因此它不依赖于编码。服务器只存储客户端发送的内容(包括UTF-8字符)

以下是一些实验:

$ echo téléphone | hexdump -C
00000000  74 c3 a9 6c c3 a9 70 68  6f 6e 65 0a              |t..l..phone.|
c3a9是“é”字符的表示形式

$ redis-cli
> set t téléphone
OK
> get t
"t\xc3\xa9l\xc3\xa9phone"
实际上,数据已正确存储在Redis服务器中。但是,当它在终端中启动时,Redis客户端将解释输出并应用到转换不可打印的字符(其定义取决于语言环境,对于多字节字符可能会被破坏)

一个简单的解决方法是使用“原始”选项启动redis cli:

$ redis-cli --raw
> get t
téléphone

您自己的应用程序可能会使用其中一个客户端库,而不是redis cli,因此在实践中应该不会有问题。

非常感谢,您的解释让事情更清楚了。你说得对,我正在使用node redis(node.js模块)查询数据库。我将检查node redis如何使用“原始”选项。很好的解释!谢谢@Didier!