Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Tendo problemas com armazenamento UTF-8 em NVarChar no SQL Server 2008


Descobri! Ao usar a classe WebClient, estava baixando os dados como uma string.

Minha configuração original...
System.Net.WebClient wc = new WebClient();
string htmlData = wc.DownloadString(myUri);

Tentei converter esses dados em UTF-16... da string atual, mas como a Microsoft opera em UTF-16, ela cuidou da conversão por conta própria.

Em vez disso, mudei minha abordagem para ler a matriz byte[] real dos dados assim ...
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);
}

Isso corrigiu o problema, e o SQL vê corretamente os acentos em tudo agora. Yippee.

Abraço a todos e obrigado pela ajuda!