Tengo un problema con la codificación. Quiero poner datos de un archivo codificado en UTF-8 en una base de datos de SQL Server 2008. SQL Server solo presenta codificación UCS-2, por lo que decidí convertir explícitamente los datos recuperados.Insertar datos UTF8 en un servidor SQL 2008
// connect to page file
_fsPage = new FileStream(mySettings.filePage, FileMode.Open, FileAccess.Read);
_streamPage = new StreamReader(_fsPage, System.Text.Encoding.UTF8);
Aquí está la rutina de conversión de los datos:
private string ConvertTitle(string title)
{
string utf8_String = Regex.Replace(Regex.Replace(title, @"\\.", _myEvaluator), @"(?<=[^\\])_", " ");
byte[] utf8_bytes = System.Text.Encoding.UTF8.GetBytes(utf8_String);
byte[] ucs2_bytes = System.Text.Encoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.Unicode, utf8_bytes);
string ucs2_String = System.Text.Encoding.Unicode.GetString(ucs2_bytes);
return ucs2_String;
}
Al recorrer el código de títulos críticos, reloj variable muestra los caracteres correctos para ambas cadena UTF-8 y UCS-2. Pero en la base de datos está parcialmente equivocado. Algunos caracteres especiales se guardan correctamente, otros no.
- incorrecto: n se convierte en un n
- Derecha: E o E son, por ejemplo, ha introducido correctamente.
¿Alguna idea de dónde podría estar el problema y cómo solucionarlo?
thans de antelación, Frank
Yap, este material de codificación/Unicode/UTF todavía me da dolores de cabeza. De todos modos, golpeas el clavo en la cabeza. Después de cambiar mi columna de varchar a nvarchar, el carácter se almacena correctamente. ¡Muchas gracias! – Aaginor