为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang中将utf16文本文件读取为字符串?

如何在golang中将utf16文本文件读取为字符串?

Go
FFIVE 2021-06-04 22:51:14
我可以将文件读取到字节数组但是当我将它转换为字符串时它将 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
提交
取消
意见反馈 帮助中心 APP下载
官方微信