Junior
Comment lire une ligne contenant des hiéroglyphes, cyrilliques et d'autres symboles?
sobes.tech IA
Réponse de l'IA
Dans Golang, les chaînes sont par défaut représentées en UTF-8, ce qui permet de travailler facilement avec des caractères issus de différents alphabets, y compris les hiéroglyphes et le cyrillique. Pour lire ces chaînes, il suffit d'utiliser les fonctions et packages standard.
Lecture depuis un fichier :
import (
"bufio"
"fmt"
"os"
)
func readStringFromFile(filename string) error {
file, err := os.Open(filename)
if err != nil {
return fmt.Errorf("erreur lors de l'ouverture du fichier : %w", err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text() // La ligne est déjà en UTF-8
fmt.Println(line)
}
if err := scanner.Err(); err != nil {
return fmt.Errorf("erreur lors de la lecture du fichier : %w", err)
}
return nil
}
Lecture depuis l'entrée standard :
import (
"bufio"
"fmt"
"os"
)
func readStringFromStdin() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Entrez une chaîne : ")
line, _ := reader.ReadString('\n') // La chaîne est lue dans un slice de bytes, puis convertie en string (UTF-8)
fmt.Println("Vous avez saisi :", line)
}
Itération sur les caractères (runes) :
import "fmt"
func iterateString(s string) {
for i, r := range s { // Range itère sur les runes (points de code Unicode)
fmt.Printf("Position : %d, Rune : %c, Point de code : %U\n", i, r, r)
}
}
Points importants :
- Les chaînes en Golang sont des séquences immuables d'octets.
- Par défaut, l'encodage utilisé est UTF-8. Cela garantit une représentation correcte des caractères de différentes langues.
- L'itération sur une chaîne avec
rangetraite chaque rune (point de code Unicode), et non chaque octet.
En supplément :
Si les données sources ne sont pas en UTF-8, il peut être nécessaire de convertir l'encodage en utilisant des packages de la bibliothèque standard ou des bibliothèques externes, comme golang.org/x/text/encoding.