MCPcopy Create free account
hub / github.com/apecloud/myduckserver / getEncoding

Function getEncoding

charset/charset.go:45–73  ·  view source on GitHub ↗
(id sql.CharacterSetID)

Source from the content-addressed store, hash-verified

43}
44
45func getEncoding(id sql.CharacterSetID) (encoding.Encoding, error) {
46 switch id {
47 case sql.CharacterSet_Unspecified, sql.CharacterSet_ascii, sql.CharacterSet_utf8mb3, sql.CharacterSet_utf8mb4:
48 return encoding.Nop, nil
49 case sql.CharacterSet_latin1:
50 // https://dev.mysql.com/doc/refman/8.4/en/charset-we-sets.html
51 // > MySQL's latin1 is the same as the Windows cp1252 character set.
52 return charmap.Windows1252, nil
53
54 case sql.CharacterSet_ucs2, sql.CharacterSet_utf16:
55 // https://dev.mysql.com/doc/refman/8.4/en/charset-unicode-utf16.html
56 return unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), nil
57 case sql.CharacterSet_utf16le:
58 // https://dev.mysql.com/doc/refman/8.4/en/charset-unicode-utf16le.html
59 return unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), nil
60 case sql.CharacterSet_utf32:
61 // https://dev.mysql.com/doc/refman/8.4/en/charset-unicode-utf32.html
62 return utf32.UTF32(utf32.BigEndian, utf32.IgnoreBOM), nil
63
64 // https://dev.mysql.com/doc/refman/8.4/en/faqs-cjk.html
65 case sql.CharacterSet_gb2312, sql.CharacterSet_gbk:
66 return simplifiedchinese.GBK, nil
67 case sql.CharacterSet_gb18030:
68 return simplifiedchinese.GB18030, nil
69 case sql.CharacterSet_big5:
70 return traditionalchinese.Big5, nil
71 }
72 return encoding.Nop, fmt.Errorf("%s: %w", id, ErrUnsupported)
73}
74
75func Encode(id sql.CharacterSetID, utf8 string) (string, error) {
76 en, err := getEncoding(id)

Callers 4

EncodeFunction · 0.85
DecodeFunction · 0.85
EncodeBytesFunction · 0.85
DecodeBytesFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected