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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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