英文:
How to open a file with specific encoding in golang?
问题
在Go语言中,读取文件时可以使用以下方式实现类似Python中的操作:
file, err := os.Open("filepath")
if err != nil {
// 处理错误
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
// 处理每一行的内容
}
if err := scanner.Err(); err != nil {
// 处理错误
}
在上述代码中,我们使用os.Open
函数打开文件,并通过bufio.NewScanner
创建一个扫描器。然后,我们可以使用scanner.Scan
方法逐行读取文件内容,并通过scanner.Text
获取每一行的内容进行处理。最后,我们需要检查scanner.Err
是否有错误发生。记得在处理完文件后使用defer file.Close()
关闭文件。
英文:
In Python, we have something like
open("filepath", encoding="utf8")
How to do that in golang while reading a file?
答案1
得分: 8
在Go中,文件始终以字节级别访问,不像Python中有文本文件的概念。Go中的字符串隐式地使用UTF-8编码,因此如果您希望将文件的内容解释为UTF-8,可以简单地将从文件获取的字节转换为字符串:
package main
import (
"fmt"
"os"
)
func main() {
dat, err := os.ReadFile("/tmp/dat")
if err != nil {
panic(err)
}
fmt.Print(string(dat))
}
如果您想以其他编码读取文件,您需要进行一些手动转换,例如从UTF-16到UTF-8的转换。
英文:
In Go files are always accessed on a byte level, unlike python which has the notion of text files. Strings in go are implicitly UTF-8 so you can simply convert the bytes gotten from a file to a string if you want to interpret the contents as UTF-8:
package main
import (
"fmt"
"os"
)
func main() {
dat, err := os.ReadFile("/tmp/dat")
if err != nil {
panic(err)
}
fmt.Print(string(dat))
}
If you want to read files in any other encoding you will need to do some manual conversion, UTF-16 to UTF-8 for example
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论