.NET Framework - Acentos en ficheros sql

Asked By AlhambraEidosKiquene on 15-Sep-08 10:38 AM
Hola,

tengo un fichero sql como recurso embebido en un proyecto de instalación.
Leo este fichero y ejecuto el SQL, pero en el Sql Server aparecen caracteres
extraños:

mal: Nueva Aplicaci?n

ok: Nueva Aplicación

En mi fichero SQL todos los caracteres se ven bien , el formato del fichero
es ANSI,; al ejecutarlo en Sql Server el valor se ve con el caracter mal.

Alguna sugerencia ?? Gracias de antemano.


' Gets the current assembly.

Dim Asm As [Assembly] = [Assembly].GetExecutingAssembly()

' Resources are named using a fully qualified name.

Dim strm As Stream = Asm.GetManifestResourceStream( _

Asm.GetName().Name & "." & Name)

' Reads the contents of the embedded file.

Dim reader As StreamReader = New StreamReader(strm)

Dim sql As String = reader.ReadToEnd()

'MsgBox(Asm.GetName().Name & "." & Name & " Total: " & sql.Length)

Return sql

--
http://www.alhambra-eidos.es/web2005/index.html
www.kiquenet.net
http://www.setbb.com/putainformatica/viewtopic.php?p=843
www.trabajobasura.com/solusoft




Alberto Poblacion replied on 15-Sep-08 11:15 AM
Sospecho que el problema no está en el envío de la sentencia al Sql Server,
sino en la lectura del archivo de recursos. El Stream que abres te da los
caracteres en binario, tal como fueron copiados al fichero (en ANSI), pero
al asignarlos a la variable "sql" de tipo String, se tienen que convertir en
Unicode (que es el formato de los strings en memoria). El StreamReader los
convierte con su conversión predeterminada, que si no me equivoco es UTF-8
(en lugar de ANSI), por lo que no salen los caracteres correctos.

Yo probaría a indicar expresamente la conversión al abrir el StreamReader:

Dim reader As StreamReader = New StreamReader(strm,
System.Text.Encoding.GetEncoding(1252))

Mira a ver si así funciona. En caso contrario, examina la variable "sql" a
ver si te llegan correctamente los caracteres, o si ya se han perdido al
llegar a ese punto (con el fin de centrar el problema y ver en cuál de las
dos partes se produce).
AlhambraEidosDesarroll replied on 16-Sep-08 03:01 AM
Gracias, utilizando Encoding.Default si que ha funcionado.

Saludos.