溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么解決golang的web開發(fā)亂碼問(wèn)題

發(fā)布時(shí)間:2020-06-17 17:19:38 來(lái)源:億速云 閱讀:375 作者:元一 欄目:編程語(yǔ)言

golang默認(rèn)編碼為utf-8,但網(wǎng)頁(yè)中會(huì)有各種格式像常見的"gb2312","gbk"等。處理這些編碼的網(wǎng)頁(yè)時(shí)就會(huì)出現(xiàn)頭大的亂碼.golang沒(méi)有自帶的編解碼包,需要借助第三方包處理。

第三方包

code.google.com/p/mahonia

使用簡(jiǎn)介

code貌似托管在谷歌的服務(wù)器上,國(guó)內(nèi)用戶可能要翻墻,我在github上fork了一個(gè)mahonia.

先判斷是否支持你想要的編碼格式,不支持的話,返回值為nil

func GetCharset(name string) *Charset

if mahonia.GetCharset(char) == nil {

    return nil, fmt.Errorf("%s charset not suported \n", char)}

創(chuàng)建特定編碼格式的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流,因?yàn)橄旅孢€用到類似于jquery的一個(gè)工具包,便于連貫陳述

rd := dec.NewReader(resp.Body)

擴(kuò)展資料:

Go語(yǔ)言是一種新的語(yǔ)言,一種并發(fā)的、帶垃圾回收的、快速編譯的語(yǔ)言。它具有以下特點(diǎn):

1.它可以在一臺(tái)計(jì)算機(jī)上用幾秒鐘的時(shí)間編譯一個(gè)大型的Go程序。

2.Go語(yǔ)言為軟件構(gòu)造提供了一種模型,它使依賴分析更加容易,且避免了大部分C風(fēng)格include文件與庫(kù)的開頭。

3.Go語(yǔ)言是靜態(tài)類型的語(yǔ)言,它的類型系統(tǒng)沒(méi)有層級(jí)。因此用戶不需要在定義類型之間的關(guān)系上花費(fèi)時(shí)間,這樣感覺起來(lái)比典型的面向?qū)ο笳Z(yǔ)言更輕量級(jí)。

4.Go語(yǔ)言完全是垃圾回收型的語(yǔ)言,并為并發(fā)執(zhí)行與通信提供了基本的支持。

以上就是golang web開發(fā)亂碼的原因與解決方法的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI