summaryrefslogtreecommitdiffstats
path: root/bridge/irc/charset.go
diff options
context:
space:
mode:
Diffstat (limited to 'bridge/irc/charset.go')
-rw-r--r--bridge/irc/charset.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/bridge/irc/charset.go b/bridge/irc/charset.go
new file mode 100644
index 00000000..57872ec9
--- /dev/null
+++ b/bridge/irc/charset.go
@@ -0,0 +1,32 @@
+package birc
+
+import (
+ "golang.org/x/text/encoding"
+ "golang.org/x/text/encoding/japanese"
+ "golang.org/x/text/encoding/korean"
+ "golang.org/x/text/encoding/simplifiedchinese"
+ "golang.org/x/text/encoding/traditionalchinese"
+ "golang.org/x/text/encoding/unicode"
+)
+
+var encoders = map[string]encoding.Encoding{
+ "utf-8": unicode.UTF8,
+ "iso-2022-jp": japanese.ISO2022JP,
+ "big5": traditionalchinese.Big5,
+ "gbk": simplifiedchinese.GBK,
+ "euc-kr": korean.EUCKR,
+ "gb2312": simplifiedchinese.HZGB2312,
+ "shift-jis": japanese.ShiftJIS,
+ "euc-jp": japanese.EUCJP,
+ "gb18030": simplifiedchinese.GB18030,
+}
+
+func toUTF8(from string, input string) string {
+ enc, ok := encoders[from]
+ if !ok {
+ return input
+ }
+
+ res, _ := enc.NewDecoder().String(input)
+ return res
+}