Maison> développement back-end> Golang> le corps du texte

Que faire si la coquille du golang est tronquée ?

PHPz
Libérer: 2023-03-31 10:50:25
original
776 Les gens l'ont consulté

La solution Golang au problème des caractères tronqués lors de l'utilisation des commandes Shell

L'essor du langage Go en a fait le langage de premier choix pour de nombreux développeurs. Lors de l'écriture de programmes Golang, nous utiliserons inévitablement certaines commandes Shell pour effectuer certaines opérations, telles que les commandes système, les commandes liées aux fichiers, etc. Mais parfois, lors de l'exécution de ces commandes Shell, vous rencontrerez des caractères tronqués, ce qui perturbera la logique du programme et provoquera l'échec du programme. Alors comment résoudre ce problème ? Cet article présentera en détail la solution au problème des caractères tronqués rencontrés dans Golang lors de l'utilisation des commandes Shell.

1. Comprendre la méthode d'encodage par défaut de Golang lors de l'exécution des commandes Shell

En langage Go, vous pouvez utiliser la fonction Command du package os pour exécuter les commandes Shell :

cmd := exec.Command(. "ls", "-l")

Lorsque nous exécutons ce code, nous constaterons que le nom du fichier, le chemin du fichier et d'autres informations associées dans le résultat de l'exécution sont affichés sous la forme de caractères tronqués. En effet, dans Golang, le codage par défaut utilisé lors de l'exécution des commandes Shell est GBK. Dans la plupart des systèmes, le codage des commandes système et des fichiers externes est UTF-8, ce qui entraîne le problème des caractères tronqués.

2. Utilisez l'encodage UTF-8 pour exécuter les commandes Shell

La façon de résoudre le problème tronqué est d'exécuter les commandes Shell en encodage UTF-8. Dans Golang, nous pouvons rendre la sortie de la commande Shell en codage UTF-8 en définissant les propriétés Stdout et Stderr de Command. Le code pertinent est le suivant :

cmd := exec.Command("ls", "-l")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Run()

In ce code, nous définissons les propriétés Stdout et Stderr sur la sortie standard et la sortie d'erreur standard dans le package os, de sorte que la sortie de la commande Shell soit sortie en codage UTF-8.

3. Définir les variables d'environnement système

Lorsque nous ne parvenons toujours pas à résoudre le problème tronqué en utilisant les méthodes ci-dessus, nous pouvons essayer de définir les variables d'environnement système dans le programme. Dans les systèmes Windows, nous pouvons définir les variables d'environnement système via le code suivant :

cmd.Env = []string{"LANG=en_US.UTF-8"}

Dans les systèmes de type Unix tels que Linux et MacOS, nous vous devez définir la variable d'environnement LC_ALL. Le code pertinent est le suivant :

cmd.Env = []string{"LC_ALL=en_US.UTF-8"}

De cette façon, vous pouvez définir la variable d'environnement système pour créer la commande Shell en mode de codage UTF-8 est émise.

4. Résumé

Dans Golang, il est courant de rencontrer des caractères tronqués lors de l'utilisation de commandes Shell, mais grâce aux méthodes ci-dessus, nous pouvons facilement résoudre ce problème. Qu'il s'agisse de modifier la méthode d'exécution du programme ou de définir des variables d'environnement système, c'est une solution relativement simple et facile. J'espère que cela aide tout le monde.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!