如何用Pythonic方式将UTF-8字符串编码为ASCII/十六进制并还原?
解决ASCII数据库存储UTF-8字符串的问题
你之前的思路是对的——把UTF-8数据转成十六进制(全ASCII字符)存储,但搞反了encode和decode的顺序,导致结果不对。正确的处理流程如下:
存储操作
先把Unicode字符串编码成UTF-8字节流,再转成十六进制格式的ASCII字符串,这样就能存入仅支持ASCII的数据库:
original_string = 'Parabéns' # 步骤:Unicode字符串 → UTF-8字节 → 十六进制ASCII字符串 hex_string = original_string.encode('utf-8').hex() database.store(hex_string)
取回还原操作
从数据库取出十六进制字符串后,先转回字节流,再解码成Unicode字符串:
retrieved_hex = database.retrieve(storage_location) # 步骤:十六进制ASCII字符串 → UTF-8字节 → Unicode字符串 final_string = bytes.fromhex(retrieved_hex).decode('utf-8')
核心逻辑就是:字符串→字节(UTF-8)→十六进制(存库);取库→十六进制→字节(UTF-8)→字符串,别搞反编码解码的顺序就行。
内容的提问来源于stack exchange,提问作者Mr. T
相关产品推荐
相关产品推荐

