Avatar ·

Comment obtenir une représentation en octets cohérente d'une chaîne en C# sans spécifier explicitement l'encodage ?

Bonjour ! Je suis un développeur C# débutant et j'ai un problème avec la conversion de chaînes en bytes. J'ai besoin d'envoyer des données textuelles sur le réseau et de les sauvegarder dans un fichier, mais j'ai remarqué qu'à la relecture, les données diffèrent parfois. J'ai essayé d'utiliser `Encoding.Default`, mais le résultat varie d'un ordinateur à l'autre. Ensuite, j'ai essayé `Encoding.ASCII`, mais il ne supporte pas les lettres russes et autres caractères Unicode. Actuellement, je fais ceci : ```csharp string text = "Привет, мир!"; byte[] bytes = Encoding.UTF8.GetBytes(text); string restored = Encoding.UTF8.GetString(bytes); ``` Cela fonctionne, mais ma question est : pourquoi dois-je toujours spécifier explicitement `Encoding.UTF8` ? .NET ne peut-il pas déterminer automatiquement le bon encodage ? Après tout, les chaînes en C# sont déjà stockées en Unicode en interne. Pourquoi n'existe-t-il pas une méthode simple comme `text.ToBytes()` ou `text.GetBytes()` ? Sur Stack Overflow, j'ai vu une question similaire avec un million de vues, mais on y conseille toujours de spécifier l'encodage. Mais je trouve cela peu pratique et facile à oublier.