gpt4 book ai didi

Windows下在CMD下执行Go出现中文乱码的解决方法

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 38 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Windows下在CMD下执行Go出现中文乱码的解决方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

在cmd下运行go程序或者是GOLAND的Terminal下运行go程序会出现中文乱码的情况.

go run ttypemain.go 。

���� Ping  [127.0.0.1] ���� 32 �ֽڵ�����: ���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128 ���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128 ���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128 ���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128 。

127.0.0.1 �� Ping ͳ����Ϣ:     ���ݰ�: �ѷ��� = 4���ѽ��� = 4����ʧ = 0 (0% ��ʧ)�� �����г̵Ĺ���ʱ��(�Ժ���Ϊ��λ)

因为Go的编码是 UTF-8,而CMD的活动页是cp936(GBK),因此产生乱码.

在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者英文字符集.

在CMD或者Terminal下运行chcp查看活动页代码:

chcp 活动代码页: 936 。

得到的结果是 中文 936,UTF-8的代码页为65001,可以直接使用 chcp 65001 将活动代码页 改成65001,这样UTF-8编码的就显示正常了.

chcp 65001 Active code page: 65001 。

?
1
2
3
4
5
6
7
8
9
10
11
12
go run ttypemain.go
 
Pinging  [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
 
Ping statistics for 127.0.0.1:
     Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
     Minimum = 0ms, Maximum = 0ms, Average = 0ms

 或者将中文转成UTF-8的编码,完整代码如下:

?
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
package main
 
import (
  "bufio"
  "fmt"
  "golang.org/x/text/encoding/simplifiedchinese"
  "os/exec"
)
 
type Charset string
 
const (
  UTF8    = Charset("UTF-8")
  GB18030 = Charset("GB18030")
)
 
func main() {
  command := "ping"
  params := []string{"127.0.0.1","-t"}
  cmd := exec.Command(command, params...)
  stdout, err := cmd.StdoutPipe()
  if err != nil {
   fmt.Println(err)
   return
  }
  cmd.Start()
  in := bufio.NewScanner(stdout)
  for in.Scan() {
   cmdRe:=ConvertByte2String(in.Bytes(),"GB18030")
   fmt.Println(cmdRe)
  }
  cmd.Wait()
}
 
func ConvertByte2String(byte []byte, charset Charset) string {
  var str string
  switch charset {
  case GB18030:
   var decodeBytes,_=simplifiedchinese.GB18030.NewDecoder().Bytes(byte)
   str= string(decodeBytes)
  case UTF8:
   fallthrough
  default:
   str = string(byte)
  }
  return str
}

正在 Ping 127.0.0.1 具有 32 字节的数据: 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128 。

到此这篇关于Windows下在CMD下执行Go出现中文乱码的解决方法的文章就介绍到这了,更多相关CMD下执行Go乱码内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/rznice/article/details/88122923 。

最后此篇关于Windows下在CMD下执行Go出现中文乱码的解决方法的文章就讲到这里了,如果你想了解更多关于Windows下在CMD下执行Go出现中文乱码的解决方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com