@@ -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