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

如何修复错误编码字符:将ø转换为ř的Python编码转换方法

编码转换问题:将ø转为ř的正确方法

我访问的网站里有个字符显示为ø,它的Unicode码点是248(十六进制0xf8),Python控制台验证如下:

>>> chr(248)
'ø'

但结合文本语义判断,这个字符是编码错误导致的,实际应该是ř——Windows-1250编码的0xf8码点对应的字符就是ř。

问题:需要执行何种编码转换才能将ø转为ř?

我尝试了两种方法都失败了:
第一种:

>>> chr(248).encode().decode('windows-1250')
'ø'

第二种:

>>> chr(248).encode('windows-1250').decode()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.6/encodings/cp1250.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character '\xf8' in position 0: character maps to <undefined>

正确转换逻辑

问题核心是编码解码顺序搞反了:当前的ø是把Windows-1250编码的字节0xf8错误用UTF-8解码得到的结果。要还原正确字符,需按以下步骤操作:

  1. 先把错误的Unicode字符ø转回对应的UTF-8字节;
  2. 再用Windows-1250编码解码该字节,得到正确的ř。

代码实现

# 错误的Unicode字符
wrong_char = 'ø'
# 转成UTF-8字节(对应原网站错误解码前的字节0xf8)
byte_data = wrong_char.encode('utf-8')
# 用Windows-1250解码字节,得到正确字符
correct_char = byte_data.decode('windows-1250')
print(correct_char)  # 输出:ř

之前方法失败的原因

  • 第一种方法:encode()默认用UTF-8,ø的UTF-8编码是b'\xc3\xb8',用Windows-1250解码这两个字节会得到ø,不符合预期。
  • 第二种方法:Windows-1250编码中没有Unicode码点0xf8对应的映射,直接编码会触发报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:01:06