golang預設編碼為utf-8,但網頁中會有各種格式像常見的"gb2312","gbk"等。處理這些編碼的網頁時就會出現頭大的亂碼.golang沒有自備的編解碼包,需要藉助第三方包處理。推薦:golang教學
第三方套件
code.google.com/p/mahonia
使用簡介
code外觀託管在Google的伺服器上,國內用戶可能要翻牆,我在github上fork了一個mahonia.
先判斷是否支援你想要的編碼格式,不支援的話,回傳值為nil
func GetCharset(name string) *Charset
if mahonia.GetCharset(char) == nil { return nil, fmt.Errorf("%s charset not suported \n", char)}
建立特定編碼格式的decoder
func NewDecoder(name string) Decoder
dec := mahonia.NewDecoder(char)
接著直接解碼:常用的有直接從字串解碼及從io流解碼
func (d Decoder) ConvertString(s string) string
func (d Decoder) NewReader(rd io.Reader) *Reader
這裡用的是io流,因為下面還用到類似jquery的一個工具包,方便連貫陳述
rd := dec.NewReader(resp.Body)
以上是golang web開發亂碼的原因與解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!