sql >> Base de Datos >  >> RDS >> Sqlserver

Problemas con el almacenamiento de UTF-8 en NVarChar en SQL Server 2008

¡Lo averigué! Cuando usaba la clase WebClient, estaba descargando los datos como una cadena.

Mi configuración original...

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

Intenté convertir estos datos en UTF-16... a partir de su cadena actual, pero dado que Microsoft opera en UTF-16, manejó la conversión por su cuenta.

En su lugar, cambié mi enfoque para leer la matriz byte[] real de los datos así...

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);
}

Esto solucionó el problema y SQL ve correctamente los acentos en todo ahora. Yippee.

¡Saludos a todos y gracias por vuestra ayuda!