如何将文件编码类型转换为UTF-8在Golang?



我必须编写代码来检查字幕文件的编码,如果它不是UTF-8,则将编码更改为它。为了获得文件的编码类型,我用Golang编写了这个函数:

func CheckEncoding(filePath string) (encode string, err error) {
content, _ := os.ReadFile(filePath)
contentType := http.DetectContentType(content)
encode = strings.Split((strings.Split(contentType, " "))[1], "=")[1]
return encode, err
}

通过这个函数,我得到了字幕编码。之后,我想检查编码是否不等于"utf-8"转换成这个格式,并使用这个新的编码(utf-8)在新文件中保存字幕,但我不知道该怎么做。

我已经使用了iconv包,但是我无法在新文件中保存输出。我读到的另一件事是这个答案,但它太复杂了,对我没有帮助。所有其他答案都是关于转换字符串编码。

使用这个来检查编码是否为utf-8

e, _, _ := charset.DetermineEncoding(content, "")

然后转换并保存到新文件

// Convert the string to UTF-8
utf8Content, err := e.NewDecoder().Bytes(content)
if err != nil {
log.Fatal(err)
}
// Save the file as UTF-8
err = ioutil.WriteFile(filename, utf8Content, 0644)
if err != nil {
log.Fatal(err)
}

我还没有测试这个代码。只要草稿就知道了。

最新更新