国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Golang - CMD下執行Go出現中文亂碼的解決方法

CMD下執行Go出現中文亂碼的解決方法

2022-01-20 00:41ourLang Golang

需要在Go寫的服務里面調用命令行或者批處理,并根據返回的結果做處理。但是windows下面用cmd返回中文會出現亂碼,本文就詳細的介紹一下解決方法,感興趣的可以了解一下

1、報錯信息如下

CMD下執行Go出現中文亂碼的解決方法

2、原因分析

因為Go的編碼是UTF-8,而CMD的活動頁是cp936(GBK),因此產生亂碼。在中文Windows系統中,如果一個文本文件是UTF-8編碼的,那么在CMD.exe命令行窗口(所謂的DOS窗口)中不能正確顯示文件中的內容。在默認情況下,命令行窗口中使用的代碼頁是中文或者美國的,即編碼是中文字符集或者英文字符集。

3、解決方法

golang處理中文時默認是utf8,當遇到其他如GBK字符是就會出現亂碼,此處介紹golang 官方golang.org/x/text/encoding/simplifiedchinese包下的編碼轉換

?
1
simplifiedchinese.GB18030.NewDecoder().Bytes()

4、封裝處理亂碼方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main
 
import "golang.org/x/text/encoding/simplifiedchinese"
 
type Charset string
 
const (
   UTF8    = Charset("UTF-8")
   GB18030 = Charset("GB18030")
)
 
func ConvertByte2String(byte []byte, charset Charset) string {
 
    var str string
    switch charset {
    case GB18030:
        decodeBytes, _ := simplifiedchinese.GB18030.NewDecoder().Bytes(byte)
        str = string(decodeBytes)
    case UTF8:
        fallthrough
    default:
        str = string(byte)
    }
 
    return str
}

5、解決亂碼完整代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package main
 
import (
    "bytes"
    "fmt"
    "golang.org/x/text/encoding/simplifiedchinese"
    "os"
    "os/exec"
)
 
type Charset string
 
const (
    UTF8    = Charset("UTF-8")
    GB18030 = Charset("GB18030")
)
 
func ConvertByte2String(byte []byte, charset Charset) string {
 
    var str string
    switch charset {
    case GB18030:
        decodeBytes, _ := simplifiedchinese.GB18030.NewDecoder().Bytes(byte)
        str = string(decodeBytes)
    case UTF8:
        fallthrough
    default:
        str = string(byte)
    }
 
    return str
}
 
//arg  執行的bat文件完整路徑
//返回錯誤信息及消息提示
func ExecCommand(arg string) (error, string) {
    c := exec.Command("cmd", "/C", arg)
    w := bytes.NewBuffer(nil)
    c.Stderr = w
    message := "執行" + arg + "文件抽取數據成功"
    _, err1 := os.Stat(arg)
    var err error
    //判斷文件是否存在
    if err1 != nil {
        err := c.Run()
        if err != nil {
            fmt.Printf("Run returns: %s\n", err)
        }
        //處理中文亂碼
        garbledStr := ConvertByte2String(w.Bytes(), GB18030)
        message = err1.Error() + garbledStr
        //文件不存在并且執行報錯
        return err, message
    } else {
        err = c.Run()
        if err != nil {
            //處理中文亂碼
            garbledStr := ConvertByte2String(w.Bytes(), GB18030)
            //文件存在 但執行bat文件報錯
            return err, garbledStr
        }
    }
    //文件存在并且執行bat文件成功
    return err, message
}

到此這篇關于CMD下執行Go出現中文亂碼的解決方法的文章就介紹到這了,更多相關CMD執行Go中文亂碼內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://please.blog.csdn.net/article/details/107541084

延伸 · 閱讀

精彩推薦
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • GolangGolang中Bit數組的實現方式

    Golang中Bit數組的實現方式

    這篇文章主要介紹了Golang中Bit數組的實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    天易獨尊11682021-06-09
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
  • Golanggolang如何使用struct的tag屬性的詳細介紹

    golang如何使用struct的tag屬性的詳細介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細介紹,從例子說起,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看...

    Go語言中文網11352020-05-21
  • Golanggolang json.Marshal 特殊html字符被轉義的解決方法

    golang json.Marshal 特殊html字符被轉義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • Golanggolang的httpserver優雅重啟方法詳解

    golang的httpserver優雅重啟方法詳解

    這篇文章主要給大家介紹了關于golang的httpserver優雅重啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    helight2992020-05-14
  • Golanggo日志系統logrus顯示文件和行號的操作

    go日志系統logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • GolangGolang通脈之數據類型詳情

    Golang通脈之數據類型詳情

    這篇文章主要介紹了Golang通脈之數據類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數名等等,Go語言中標識符允許由...

    4272021-11-24
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 色欧美片视频在线观看 | 亚洲福利一区二区 | 色就是色网站 | 狠狠色综合网站久久久久久久 | 国产精品中文字幕在线观看 | 两性视频久久 | 一区二区三区在线免费播放 | 婷婷中文字幕 | 久久久久久久久久久国产 | 成人午夜小视频 | 亚洲精选一区二区 | 亚洲欧美在线视频 | 亚洲精品久久久 | 国产精品综合一区二区 | 91久久久久久久久久 | 亚洲字幕成人中文在线观看 | 国产伦精品一区二区三区四区视频 | 欧美在线视频一区二区 | 一区二区三区在线免费播放 | 亚洲国产成人精品女人久久久 | 国产精品久久av | 综合久久av| 黄在线| 国产成人精品一区二区三区网站观看 | 国产视频三区 | 欧洲精品视频在线观看 | 在线观看亚洲一区二区三区 | 性做久久久 | 一区二区三区动漫 | 免费啪啪网站 | 久热亚洲| 久久av网| 在线播放亚洲 | 久久久亚洲国产天美传媒修理工 | 黄色毛片免费视频 | 日韩成人一级片 | 最好的2019中文大全在线观看 | 成人婷婷网色偷偷亚洲男人的天堂 | 久久精品日产第一区二区三区 | 在线日本中文字幕 | 国产一区二区三区 |