独孤求败Ace 2023-06-03 16:17 采纳率: 18.2%
浏览 14

redis数据库,scrapy,爬虫

redis-cli --raw
127.0.0.1:6379[5]> hset yan paizi ᅲᅬᅯᅥ #中文字紫云
0
127.0.0.1:6379[5]> hget yan paizi
紫云

出现这个乱码是怎么回事

  • 写回答

2条回答 默认 最新

  • 不良使 新星创作者: python技术领域 2023-06-07 10:07
    关注

    在这种情况下, Redis 存储的值出现乱码是可能的。这可能是由于 Redis 默认使用二进制安全协议,但是输出时默认使用的字符集时 ASCII 字符集。如果 Redis 存储的值包含非 ASCII 字符,则在使用 ASCII 字符集打印输出时,它们将出现乱码。

    在这种情况下,你可以在 redis-cli 启动器中使用 --raw 标志,这将强制 redis-cli 使用二进制模式,可以正确输出存储在 Redis 中的所有值,包括非 ASCII 字符。

    通过在 redis-cli 启动器中使用 --raw 标志,例如:

    redis-cli --raw

    然后输入命令语句,例如:

    hget yan paizi

    这应该会正确输出存储在 Redis 中的值,如"紫云",而不是乱码。

    另外,你也可以使用 Unicode 编码在 Redis 中存储中文或其它非 ASCII 字符,以避免出现乱码。这需要在存储值时,将 Unicode 编码后的字符串存储到 Redis 中,在需要时使用相应的解码算法将其转换回原始字符串格式。这种方法可以避免出现字符集不兼容或处理乱码的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月3日