Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Problème de stockage UTF-8 dans NVarChar dans SQL Server 2008

Deviner! Lors de l'utilisation de la classe WebClient, je téléchargeais les données sous forme de chaîne.

Ma configuration d'origine...

System.Net.WebClient wc = new WebClient();
string htmlData = wc.DownloadString(myUri);

J'ai essayé de convertir ces données en UTF-16... à partir de sa chaîne actuelle, mais comme Microsoft fonctionne en UTF-16, il a géré la conversion tout seul.

Au lieu de cela, j'ai changé mon approche pour lire le tableau byte[] réel à partir des données comme ceci...

System.Net.WebClient wc = new WebClient();
string htmlData = UTFConvert(wc.DownloadData(myUri));

private string UTFConvert(byte[] utfBytes)
{
    byte[] isoBytes = Encoding.Convert(Encoding.UTF8, Encoding.Unicode, utfBytes);
    return Encoding.Unicode.GetString(isoBytes);
}

Cela a résolu le problème et SQL voit correctement les accents dans tout maintenant. Youpi.

Bravo à tous et merci pour votre aide !