J'ai recherché ici des posts sur Stack Overflow, et j'ai lu le post sur le codage de JoelOnSoftware, et j'ai maintenant une bonne compréhension des problèmes d'encodage. Mais je rencontre un problème avec certains encodages de caractères provenant du presse-papiers de Windows. Le test reproductible consiste à utiliser IE et à sélectionner et à copier le texte "Programmes publicitaires" sur la page d'accueil de Google.Problème d'encodage C# UTF-8
J'utilise le code C# suivant pour tirer ce texte hors le presse-papiers (vérification d'erreurs supprimé):
uint FormatId = GetRegisteredClipboardFormatId("HTML Format");
IntPtr hHtml = Win32.GetClipboardData(FormatId);
uint DataSize = Win32.GlobalSize(hHtml);
byte[] HtmlData = new byte[DataSize];
IntPtr pData = Win32.GlobalLock(hHtml);
Marshal.Copy(pData, HtmlData, 0, (int)DataSize);
Win32.GlobalUnlock(hHtml);
Les données HTML du presse-papiers est censé être UTF-8 codé, donc j'utiliser ce qui suit pour convertir les données en une chaîne:
string Content = Encoding.UTF8.GetString(HtmlData);
Cependant, en ignorant les balises HTML environnants, ce que cela entraîne est:
« Programmes » AdvertisingÂSuis-je en train de faire quelque chose de mal, de mal comprendre quelque chose ou le problème se situe-t-il ailleurs?
Merci pour toute aide!
Eh bien, je suppose que cela conduit à deux questions: 1. Si la classe de codage sait qu'il prend en UTF-8 et en sortie une chaîne Unicode (UTF-16?), ne devrait-il pas savoir comment traduire C2 A0 en UTF-8 à la représentation correcte de en Unicode? Je suppose que je ne comprends pas le problème de l'encodage à un niveau basique. Désactivé pour faire plus de recherches ... 2. Je vais finalement encoder la chaîne en UTF-8 pour la rendre dans un navigateur. Je convertis uniquement en une chaîne .NET pour faciliter l'analyse. Existe-t-il un meilleur moyen d'analyser le texte dans son encodage UTF-8 natif? –
Voir mes modifications ..................... –
Excellent! Cela a fait l'affaire - merci beaucoup pour le pointeur! –