You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UTF-16编码转字符串后无法解码的解决方法咨询

解决AttributeError: str object has no attribute 'decode'问题

你的问题核心是错误地将编码后的bytes对象转成了字符串——a.encode("utf-16")返回的是bytes类型,直接用str()转换后,得到的是bytes的字符串表示(比如b'\xff\xfea\x00p\x00p\x00l\x00e\x00'),这类字符串没有decode方法,自然报错。

下面提供两种解决方式:

1. 最优方案:避免将bytes转成str

直接保留编码后的bytes对象,直接解码即可:

a = "apple"
b = a.encode("utf-16")  # 直接获取bytes对象,无需转str
c = b.decode("utf-16")
print(c)  # 输出:apple

2. 补救方案:若已转成str,还原为bytes再解码

如果已经把bytes转成了字符串,可以用ast.literal_eval将字符串形式的bytes表示还原为真实的bytes对象,再解码:

import ast

a = "apple"
b = str(a.encode("utf-16"))  # 已转为字符串形式的bytes
# 还原为bytes对象
b_bytes = ast.literal_eval(b)
c = b_bytes.decode("utf-16")
print(c)  # 输出:apple

注意:第二种方法仅适用于字符串是标准的bytes repr格式(以b'开头、'结尾),如果字符串被修改过可能失效,因此优先推荐第一种方案。

内容的提问来源于stack exchange,提问作者OmarBhai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:25:57