美文网首页
golang执行命令并判断是否是utf8格式

golang执行命令并判断是否是utf8格式

作者: 哆啦在这A梦在哪 | 来源:发表于2023-01-15 15:21 被阅读0次

    1.使用了 utf8,transform, simplifiedchinese 的几个包

    话不多说,上代码:

    // RunCommand1 运行命令并且默认反馈 UTF8 格式
    func RunCommand1(args ...string) (string, error) {
        if len(args) < 1 {
            return "", errors.New("args not nil")
        }
    // Output 反馈执行命令的输出
        res, err := exec.Command(args[0], args[1:]...).Output()
        if err != nil {
            return "", err
        }
    // utf8 Valid方法判断格式
        if utf8.Valid(res) {
            return string(res), err
        }
        res, err = gbkToUtf8(res)
        if err != nil {
            return "", err
        }
        return string(res), err
    }
    
    // 其他格式转化为 utf8 格式
    func gbkToUtf8(s []byte) ([]byte, error) {
        reader := transform.NewReader(bytes.NewReader(s), simplifiedchinese.GBK.NewDecoder())
        d, e := ioutil.ReadAll(reader)
        if e != nil {
            return nil, e
        }
        return d, nil
    }
    // 使用一条复杂点的命令来描述调用情况
    func main() {
        res, err := RunCommand1("cscript", "//nologo", "C:\\Windows\\System32\\slmgr.vbs", "-xpr")
        log.Println("res:", res, err)
    
        res2, err := RunCommand1("cscript", "//nologo", "C:\\Windows\\System32\\slmgr.vbs", "-dli")
        log.Println("res2:", (res2), err)
    }
    

    相关文章

      网友评论

          本文标题:golang执行命令并判断是否是utf8格式

          本文链接:https://www.haomeiwen.com/subject/mzracdtx.html