为了账号安全,请及时绑定邮箱和手机立即绑定

无法打印中文,如果使用 Go 到 exec python 脚本

无法打印中文,如果使用 Go 到 exec python 脚本

Go
RISEBY 2022-08-01 17:16:20
我使用以下命令通过Go运行python 3.7.4文件。Go exec.Command("cmd", "/C", "path_to_python_exe", "python_script_file")以下脚本将打印“abc”而不使用中文:print ("abc")print ("系统")并且它不打印任何内容,也不返回任何错误:print ("系统")print ("abc")当我在windows / linux终端中运行“python test.py”时,它运行良好。我得到的输出如下:stdout, err := cmd.StdoutPipe()cmd.Start()reader := bufio.NewReader(stdout)output := make([]string, 0)for {    line, err2 := reader.ReadString('\n')    if err2 != nil || io.EOF == err2 {        break    }    output = append(output, line)}cmd.Wait()return strings.Join(output, "")
查看完整描述

3 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

为了能够打印中文,您必须创建一个可以显示中文的cmd提示。开始注册表编辑并导航到

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont

添加新字符串

Name: 935
Value: *新宋体

这将显示为 NSimSun。这是在Win7上。我还没有在W10上尝试过 - 它可能接受NSimSun而不是中文的等效物。我不记得我是怎么得到这个等同的中文名字的。

关闭注册表编辑器,启动新的 cmd 提示符。弹出属性,选择字体并将其更改为NSimSun。

现在运行打印英文和中文的小段代码,你应该看到中文和英文位。

至于GoLang位,你将不得不看看@TehSphinX的答案。


查看完整回答
反对 回复 2022-08-01
?
www说

TA贡献1775条经验 获得超8个赞

添加以下代码,效果很好:


   import sys,io,platform

   if(platform.system()=='Windows'):

      import sys,io

      sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')


查看完整回答
反对 回复 2022-08-01
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

在Go中,还没有执行任何东西。它返回一个结构,您必须使用它提供的方法执行该结构。exec.Commandexec.CmdRun


然后,您执行的命令的输出将通过管道传回 Go,而不是直接传输到控制台。


使用函数执行和捕获输出的工作示例:Output


func main() {

    cmd := exec.Command("python", "test.py")

    bts, err := cmd.Output()

    if err != nil {

        log.Fatal(err)

    }

    fmt.Print(string(bts))

}

test.py文件:


# coding=UTF-8


print("hello")

print("系统")


查看完整回答
反对 回复 2022-08-01
  • 3 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信