gpt4 book ai didi

go - 在 go 中读取 US-ASCII 文件

转载 作者:IT王子 更新时间:2023-10-29 01:25:00 34 4
gpt4 key购买 nike

目前我尝试将 us-ascii 文件读入 golang,但每次我这样做时,每个特殊符号,如 Ä Ö Ü ß 都会被替换为?或者在我的数据库中带有特殊符号 ?。

我能做些什么来阻止它吗?

这是我读取文件的方式:

file, err := os.Open(path)
if err != nil {
return err
}
var lines []string
r := bufio.NewReader(file)
for {
line, err := r.ReadBytes('\n')
if err != nil {
break
}
lines = append(lines, string(line))
}
fmt.Println(strings.Join(lines, ""))
index.Content = strings.Join(lines, "")

最佳答案

由于字母 Ä Ö Ü ß 在 US-ASCII 中不存在,我有根据地猜测您实际上是在处理 Latin-1 (ISO-8859-1) 编码。

从 Latin-1 转换可以像这样完成:

runes := make([]rune, len(line))
for i, b := range line {
runes[i] = rune(b)
}
lines = append(lines, string(runes))

编辑:

该示例未优化,但它显示了如何将 Latin-1 字节存储在 rune 中,因为 Latin-1 的值直接对应于 Unicode 代码点。然后在将 []rune 转换为 string 时完成实际编码为 UTF-8。

关于go - 在 go 中读取 US-ASCII 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26656862/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com