Skip to content

Commit b93e77e

Browse files
committed
fix: no need coder when use utf8 or unknow codertype
1 parent 8dbfffd commit b93e77e

1 file changed

Lines changed: 35 additions & 21 deletions

File tree

utils/coder.go

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -69,23 +69,39 @@ func CoderToType(types string) CoderType {
6969
}
7070
}
7171

72-
func DecoderReader(types CoderType, r io.Reader) *transform.Reader {
73-
return transform.NewReader(r, newDeCoder(types))
72+
func DecoderReader(types CoderType, r io.Reader) io.Reader {
73+
t := newDecoder(types)
74+
if t == nil {
75+
return r
76+
}
77+
return transform.NewReader(r, newDecoder(types))
7478
}
7579

76-
func DecoderWriter(types CoderType, r io.Writer) *transform.Writer {
77-
return transform.NewWriter(r, newDeCoder(types))
80+
func DecoderWriter(types CoderType, r io.Writer) io.Writer {
81+
t := newDecoder(types)
82+
if t == nil {
83+
return r
84+
}
85+
return transform.NewWriter(r, t)
7886
}
7987

80-
func EncoderReader(types CoderType, r io.Reader) *transform.Reader {
81-
return transform.NewReader(r, newEeCoder(types))
88+
func EncoderReader(types CoderType, r io.Reader) io.Reader {
89+
t := newEecoder(types)
90+
if t == nil {
91+
return r
92+
}
93+
return transform.NewReader(r, t)
8294
}
8395

84-
func EncoderWriter(types CoderType, r io.Writer) *transform.Writer {
85-
return transform.NewWriter(r, newEeCoder(types))
96+
func EncoderWriter(types CoderType, r io.Writer) io.Writer {
97+
t := newEecoder(types)
98+
if t == nil {
99+
return r
100+
}
101+
return transform.NewWriter(r, t)
86102
}
87103

88-
func newDeCoder(coder CoderType) *encoding.Decoder {
104+
func newDecoder(coder CoderType) *encoding.Decoder {
89105
var decoder *encoding.Decoder
90106
switch coder {
91107
case T_GBK:
@@ -103,30 +119,28 @@ func newDeCoder(coder CoderType) *encoding.Decoder {
103119
case T_UTF16_B:
104120
decoder = unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM).NewDecoder()
105121
default:
106-
decoder = unicode.UTF8.NewDecoder()
107122
}
108123
return decoder
109124
}
110125

111-
func newEeCoder(coder CoderType) *encoding.Encoder {
112-
var decoder *encoding.Encoder
126+
func newEecoder(coder CoderType) *encoding.Encoder {
127+
var encoder *encoding.Encoder
113128
switch coder {
114129
case T_GBK:
115-
decoder = simplifiedchinese.GBK.NewEncoder()
130+
encoder = simplifiedchinese.GBK.NewEncoder()
116131
case T_Big5:
117-
decoder = traditionalchinese.Big5.NewEncoder()
132+
encoder = traditionalchinese.Big5.NewEncoder()
118133
case T_ShiftJIS:
119-
decoder = japanese.ShiftJIS.NewEncoder()
134+
encoder = japanese.ShiftJIS.NewEncoder()
120135
case T_EUCKR:
121-
decoder = korean.EUCKR.NewEncoder()
136+
encoder = korean.EUCKR.NewEncoder()
122137
case T_GB18030:
123-
decoder = simplifiedchinese.GB18030.NewEncoder()
138+
encoder = simplifiedchinese.GB18030.NewEncoder()
124139
case T_UTF16_L:
125-
decoder = unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM).NewEncoder()
140+
encoder = unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM).NewEncoder()
126141
case T_UTF16_B:
127-
decoder = unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM).NewEncoder()
142+
encoder = unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM).NewEncoder()
128143
default:
129-
decoder = unicode.UTF8.NewEncoder()
130144
}
131-
return decoder
145+
return encoder
132146
}

0 commit comments

Comments
 (0)