首页 > 解决方案 > pymemcache unicode char 问题

问题描述

我正在尝试将值保存在 Memcache 中,但面临以下值错误(对于加拿大的ñ)

"last_name":"Canada Herrador","personal_space_id":105175

pymemcache.exceptions.MemcacheIllegalInputError:数据值必须是二进制安全的:“ascii”编解码器无法在位置 61 编码字符“\xf1”:序数不在范围内(128)

如何在内存缓存中保存 Unicode 字符,因为默认情况下它只支持 ASCII 字符?

标签: pythonunicodeasciimemcached

解决方案


如何在内存缓存中保存 Unicode 字符,因为默认情况下它只支持 ASCII 字符?

您可以利用base64内置模块来完成此任务,但请注意,如果与纯 ASCII 文本一起使用,它将比文本本身占用更多空间,请考虑以下示例:

import base64
last_name = "Cañada Herrador"
encoded_last_name = base64.b64encode(last_name.encode("utf-8")).decode("ascii")
# now encoded_last_name is ASCII str which you can use with memcache
print(encoded_last_name)  # Q2HDsWFkYSBIZXJyYWRvcg==
# after retrieving to get original string do
decoded_last_name = base64.b64decode(encoded_last_name).decode("utf-8")
print(decoded_last_name)  # Cañada Herrador

推荐阅读