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

在 Go 中读取带有 BOM 的文件

在 Go 中读取带有 BOM 的文件

Go
月关宝盒 2021-07-14 13:01:13
我需要读取可能包含或不包含字节顺序标记的 Unicode 文件。我当然可以自己检查文件的前几个字节,如果找到 BOM,则丢弃 BOM。但在我这样做之前,是否有任何标准方法可以做到这一点,无论是在核心库中还是在第三方中?
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

您可以使用utfbom包。它io.Reader根据需要包装、检测和丢弃 BOM。它还可以返回 BOM 检测到的编码。


查看完整回答
反对 回复 2021-07-19
?
皈依舞

TA贡献1851条经验 获得超3个赞

我以为我会在这里补充的方式剥离的字节顺序标记从序列串-而不是直接字节乱搞(如上图所示)。


package main


import (

    "fmt"

    "strings"

)


func main() {

    s := "\uFEFF is a string that starts with a Byte Order Mark"

    fmt.Printf("before: '%v' (len=%v)\n", s, len(s))


    ByteOrderMarkAsString := string('\uFEFF')


    if strings.HasPrefix(s, ByteOrderMarkAsString) {


        fmt.Printf("Found leading Byte Order Mark sequence!\n")

        

        s = strings.TrimPrefix(s, ByteOrderMarkAsString)

    }

    fmt.Printf("after: '%v' (len=%v)\n", s, len(s)) 

}

其他“字符串”函数也应该工作。


这是打印出来的:


before: ' is a string that starts with a Byte Order Mark (len=50)'

Found leading Byte Order Mark sequence!

after: ' is a string that starts with a Byte Order Mark (len=47)'

干杯!


查看完整回答
反对 回复 2021-07-19
  • 3 回答
  • 0 关注
  • 377 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信