Détails
Comment obtenir une représentation cohérente en octets des chaînes de caractères en C# sans spécifier manuellement un encodage ?
Comment convertir une "chaîne" en "octet[]" dans .NET (C#) sans spécifier manuellement un encodage spécifique ?
Je vais crypter la chaîne. Je peux la crypter sans la convertir, mais j’aimerais quand même savoir pourquoi l’encodage entre en jeu ici.
De même, pourquoi l'encodage doit-il entrer en ligne de compte ? Ne puis-je pas simplement obtenir les octets dans lesquels la chaîne a été stockée ? Pourquoi y a-t-il une dépendance vis-à-vis des codages de caractères ?
2111
3
Cela dépend de l'encodage de votre chaîne ([ASCII][1], [UTF-8][2], ...).
Par exemple :
Un petit exemple de l'importance de l'encodage :
L'ASCII n'est tout simplement pas équipé pour traiter les caractères spéciaux.
En interne, le cadre .NET utilise [UTF-16][3] pour représenter les chaînes de caractères, donc si vous voulez simplement obtenir les octets exacts que .NET utilise, utilisez
System.Text.Encoding.Unicode.GetBytes (...)
.Voir [Character Encoding in the .NET Framework][4] (MSDN) pour plus d'informations.
[1] : http://en.wikipedia.org/wiki/ASCII [2] : http://en.wikipedia.org/wiki/UTF-8 [3] : https://en.wikipedia.org/wiki/UTF-16 [4] : http://msdn.microsoft.com/en-us/library/ms404377.aspx