读取utf-8并替换错误

Read utf-8 and replace errors

在 python 我可以读取 utf8 格式的文件并替换任何错误,如下所示:

with open(filename, encoding='utf-8', errors='replace') as ifile:

是否有 golang 的等效项?

谢谢。

Python 代码没有完全匹配,因为 Go 文件 return 文件数据是原样的。没有解码步骤。

如果您的目标是修复无效的 UTF-8 序列,请使用 bytes.ToValidUTF8 修复从文件中提取的数据。

var unicodeReplacement = []byte{0xef, 0xbf, 0xbd}

func readFileFix(filename string) ([]byte, error) {
    p, err := os.ReadFile(filename)
    if err != nil {
        return nil, err
    }
    return bytes.ToValidUTF8(p, unicodeReplacement), nil
}