summaryrefslogtreecommitdiff
path: root/mkvlib
diff options
context:
space:
mode:
authorb5f0d6c3 <[email protected]>2022-05-06 14:08:24 +0800
committerb5f0d6c3 <[email protected]>2022-05-06 14:08:24 +0800
commitcd151081c008722868062b522ae2076b4df8d312 (patch)
tree8b1d5709138c94653723eb43206c7d0c369b0d85 /mkvlib
parentb1258fe475ceeaab59dbc50af99e70f2fd72f652 (diff)
update mkvlib:add utf-16le support
Diffstat (limited to 'mkvlib')
-rw-r--r--mkvlib/ass.go2
-rw-r--r--mkvlib/go.mod3
-rw-r--r--mkvlib/shared.go2
-rw-r--r--mkvlib/utils.go13
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)
+}