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

UTF-8编码波兰字符保存到文本文件后乱码,如何正确保存?

问题分析与解决方法

问题核心是你混淆了字节序列和Unicode字符串的区别:

  • 你想要的字符Ć(Unicode码点U+0106),其UTF-8编码对应的字节序列是b'\xc4\x86'
  • 但你代码里的"ABC\xc4\x86def"是Unicode字符串,其中\xc4对应Unicode字符U+00C4(显示为Ä),\x86对应U+0086(部分环境显示为†)。直接用UTF-8写入时,这两个字符会被重新编码成b'\xc3\x84\xc2\x86',最终文件解码后自然显示为ABCĆdef。

以下是三种正确的解决方式:

方法1:直接使用正确的Unicode字符

直接在字符串中写入Ć,Python会自动处理其UTF-8编码:

string = "ABCĆdef"
with open("messagessemi.txt", "w", encoding="utf-8") as f:
    f.write(string)

方法2:从错误字符串还原正确的Unicode

把错误的字符串按Latin-1编码转为字节(保留原始的\xc4\x86字节),再用UTF-8解码得到正确字符:

original_str = "ABC\xc4\x86def"
# 转字节:每个Unicode字符对应一个原始字节
byte_data = original_str.encode('latin-1')
# 用UTF-8解码得到Ć
correct_str = byte_data.decode('utf-8')
with open("messagessemi.txt", "w", encoding="utf-8") as f:
    f.write(correct_str)

方法3:直接写入正确的UTF-8字节序列

如果你的原始数据是字节形式,直接用二进制模式写入:

byte_content = b"ABC\xc4\x86def"
with open("messagessemi.txt", "wb") as f:
    f.write(byte_content)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:56:03