我可以将文件读取到字节数组但是当我将它转换为字符串时它将 utf16 字节视为 ascii如何正确转换?package mainimport ("fmt""os""bufio")func main(){ // read whole the file f, err := os.Open("test.txt") if err != nil { fmt.Printf("error opening file: %v\n",err) os.Exit(1) } r := bufio.NewReader(f) var s,b,e = r.ReadLine() if e==nil{ fmt.Println(b) fmt.Println(s) fmt.Println(string(s)) }}输出:错误的[255 254 91 0 83 0 99 0 114 0 105 0 112 0 116 0 32 0 73 0 110 0 102 0 111 0 93 0 13 0]脚本信息]更新:在我测试了这两个示例之后,我现在明白了确切的问题是什么。在windows中,如果我在行尾添加换行符(CR+LF),CR将在行中读取。因为 readline 函数无法正确处理 unicode([OD OA]=ok,[OD 00 OA 00]=not ok)。如果 readline 函数可以识别 unicode,它应该理解 [OD 00 OA 00] 并返回 []uint16 而不是 []bytes。所以我认为我不应该使用 bufio.NewReader 因为它无法读取 utf16,我没有看到 bufio.NewReader.ReadLine 可以接受参数作为标志来指示读取文本是 utf8、utf16le/be 或 utf32。go库中是否有unicode文本的readline函数?
3 回答
- 3 回答
- 0 关注
- 347 浏览
添加回答
举报
0/150
提交
取消