Problème d'affichage de certain caractère UTF-8
Bonjour,
Je dois faire de l'extraction de donnée à partir d'un site web, ce site est en encodé en UTF-8.
Pour 95% des caractères spéciaux je les décodes sans problèmes via :
Code:
1 2 3 4 5 6 7 8 9 10 11
| public static String UTF8Decode( String sText )
{
Byte[] utf8Bytes = new Byte[ sText.Length ];
for ( int i = 0; i < sText.Length; ++i )
{
utf8Bytes[ i ] = ( Byte )sText[ i ];
}
return Encoding.UTF8.GetString( utf8Bytes, 0, utf8Bytes.Length );//.ToString();
} |
Que j'utilise de la manière suivante :
Code:
UTF8Decode( System.Net.WebUtility.HtmlDecode( sInnerText ) )
Or c'est suffisant pour la plus part des caractères mais pas pour :
"Maḥfūẓ, Najīb" <= Dans ce cas seul le "z pointé" fail.
Et je vois "�"
Je soupçonne le code
Code:
utf8Bytes[ i ] = ( Byte )sText[ i ];
parce qu'en UTF-8 un caractère fait 8, 16 ou 32 bits et pas toujours un Bytes... J'ai essayé de convertir la source en UTF16/Unicode... Mais rien n'y fait...
Le code est en C#, mais c'est la même chose quelque soit le langage .NET.
Merci