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 CS : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Or c'est suffisant pour la plus part des caractères mais pas pour :
Code : Sélectionner tout - Visualiser dans une fenêtre à part UTF8Decode( System.Net.WebUtility.HtmlDecode( sInnerText ) )
"Maḥfūẓ, Najīb" <= Dans ce cas seul le "z pointé" fail.
Et je vois "�"
Je soupçonne le codeparce 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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part utf8Bytes[ i ] = ( Byte )sText[ i ];
Le code est en C#, mais c'est la même chose quelque soit le langage .NET.
Merci
Partager