猿问

在 Go 中读取带有 BOM 的文件

我需要读取可能包含或不包含字节顺序标记的 Unicode 文件。我当然可以自己检查文件的前几个字节,如果找到 BOM,则丢弃 BOM。但在我这样做之前,是否有任何标准方法可以做到这一点,无论是在核心库中还是在第三方中?


月关宝盒
浏览 378回答 3
3回答

www说

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

皈依舞

我以为我会在这里补充的方式剥离的字节顺序标记从序列串-而不是直接字节乱搞(如上图所示)。package mainimport (    "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)'干杯!
随时随地看视频慕课网APP

相关分类

Go
我要回答