diff options
| author | b5f0d6c3 <[email protected]> | 2022-05-06 14:08:24 +0800 |
|---|---|---|
| committer | b5f0d6c3 <[email protected]> | 2022-05-06 14:08:24 +0800 |
| commit | cd151081c008722868062b522ae2076b4df8d312 (patch) | |
| tree | 8b1d5709138c94653723eb43206c7d0c369b0d85 | |
| parent | b1258fe475ceeaab59dbc50af99e70f2fd72f652 (diff) | |
update mkvlib:add utf-16le support
| -rw-r--r-- | mkvlib/ass.go | 2 | ||||
| -rw-r--r-- | mkvlib/go.mod | 3 | ||||
| -rw-r--r-- | mkvlib/shared.go | 2 | ||||
| -rw-r--r-- | mkvlib/utils.go | 13 |
4 files changed, 17 insertions, 3 deletions
diff --git a/mkvlib/ass.go b/mkvlib/ass.go index 4bd8ee8..ce60e96 100644 --- a/mkvlib/ass.go +++ b/mkvlib/ass.go @@ -98,7 +98,7 @@ func (self *assProcessor) parse() bool { ec++ } else { data, err := io.ReadAll(f) - str := string(data) + str := toUTF8(data) if err == nil { self.subtitles[file] = str } else { diff --git a/mkvlib/go.mod b/mkvlib/go.mod index 94e1b7e..7421a3a 100644 --- a/mkvlib/go.mod +++ b/mkvlib/go.mod @@ -5,12 +5,13 @@ go 1.18 require ( github.com/antchfx/xmlquery v1.3.10 github.com/asticode/go-astikit v0.29.1 + github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f golang.org/x/image v0.0.0-20220413100746-70e8d0d3baa9 + golang.org/x/text v0.3.6 ) require ( github.com/antchfx/xpath v1.2.0 // indirect github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc // indirect - golang.org/x/text v0.3.6 // indirect ) diff --git a/mkvlib/shared.go b/mkvlib/shared.go index 727a774..979b109 100644 --- a/mkvlib/shared.go +++ b/mkvlib/shared.go @@ -11,7 +11,7 @@ import ( ) const libName = "mkvlib" -const libVer = "v1.8.7" +const libVer = "v1.8.8" const LibFName = libName + " " + libVer diff --git a/mkvlib/utils.go b/mkvlib/utils.go index 590ed2e..85ef657 100644 --- a/mkvlib/utils.go +++ b/mkvlib/utils.go @@ -3,6 +3,9 @@ package mkvlib import ( "errors" "fmt" + "github.com/gogs/chardet" + "golang.org/x/text/encoding/unicode" + "golang.org/x/text/transform" "io" "math/rand" "os" @@ -213,3 +216,13 @@ func randomStr(l int) string { } return string(result) } + +func toUTF8(data []byte) string { + d := chardet.NewTextDetector() + if r, err := d.DetectBest(data); err == nil { + if r.Charset == "UTF-16LE" { + data, _, _ = transform.Bytes(unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM).NewDecoder(), data) + } + } + return string(data) +} |
