BandaAncha.eu

Comunidad de usuarios
de fibra, móvil y ADSL

ruso en asp.net y sql server

BocaDePez
BocaDePez

Hola a todos:

Tengo un pequeño problema con el idioma ruso y es el siguiente. Cuando recupero de la base de datos los caracteres cirilicos todo el rato en la pagina web me los interpreta con caracteres de interrogacion (?). La base de datos la tengo modificado con la intercalacion en Cyrillic_General_100_BIN y esta me la interpreta correctamente, pero cuando lo muestro en la página web siempre esta con las interrogaciones. He provado a poner lo de uiculture, culture, elñ requestencoding, responseencoding pero todo el rato sale con las ?. Parte del codigo de vb es el siguiente:

Dim cmd_cargar As New ADODB.Command

cmd_cargar.ActiveConnection = cn

cmd_cargar.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc

cmd_cargar.CommandText = "pr_cargar_textos_presentacion"

Dim prm_idioma As New ADODB.Parameter

Dim prm_titulo As New ADODB.Parameter

Dim prm_texto1 As New ADODB.Parameter

Dim prm_texto2 As New ADODB.Parameter

Dim prm_texto3 As New ADODB.Parameter

Dim prm_texto4 As New ADODB.Parameter

Dim prm_texto5 As New ADODB.Parameter

prm_idioma = cmd_cargar.CreateParameter("idioma", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamInput, 3)

prm_titulo = cmd_cargar.CreateParameter("titulo", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamOutput, 500)

prm_texto1 = cmd_cargar.CreateParameter("texto1", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamOutput, 8000)

prm_texto2 = cmd_cargar.CreateParameter("texto2", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamOutput, 8000)

prm_texto3 = cmd_cargar.CreateParameter("texto3", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamOutput, 8000)

prm_texto4 = cmd_cargar.CreateParameter("texto4", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamOutput, 8000)

prm_texto5 = cmd_cargar.CreateParameter("texto5", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamOutput, 8000)

prm_idioma.Value = "rus"

cmd_cargar.Parameters.Append(prm_idioma)

cmd_cargar.Parameters.Append(prm_titulo)

cmd_cargar.Parameters.Append(prm_texto1)

cmd_cargar.Parameters.Append(prm_texto2)

cmd_cargar.Parameters.Append(prm_texto3)

cmd_cargar.Parameters.Append(prm_texto4)

cmd_cargar.Parameters.Append(prm_texto5)

cmd_cargar.Execute()

If cmd_cargar("titulo").Value Is DBNull.Value Then

Else

lbl_titulo.Text = cmd_cargar("titulo").Value

lbl_texto1.Text = cmd_cargar("texto1").Value

lbl_texto2.Text = cmd_cargar("texto2").Value

lbl_texto3.Text = cmd_cargar("texto3").Value

lbl_texto4.Text = cmd_cargar("texto4").Value

lbl_texto5.Text = cmd_cargar("texto5").Value

End If

Tengo algun parametro mal? Tengo que cambiar alguna configuracion?

Muchas gracias a todos

Este tema está cerrado a nuevas respuestas. Abre un nuevo tema para retomar la conversación.
BocaDePez
BocaDePez

Si con el botón derecho al navegador le dices que interprete el texto con otra codificación, ¿consigues resultados?

¿Has puesto el tipo de codificación en el código HTML que envías al navegador?

<

BocaDePez
BocaDePez

No sale bien el texto, BandaAncha lo interpreta y se lo carga...

<meta http-equiv=&quote;Content-Type&quote; content=&quotetext/html; charset=*****************&quote />

🗨️ 1
LineBenchmark

Si, debería poder meterse dentro de "código" en el editor, pero lo elimina igualmente. Se lo voy a comentar a Josh a ver si puede hacer algo.

El truco momentáneo pasa por dejar espacios en blanco en el código. :)

< meta http-equiv=" Content-Type " content=" text/html; charset=***************** " / >

Te borro los post de 'prueba'. ;)

Saludos.

BocaDePez
BocaDePez

Hola a todos:

Soy el bocadepez que abrió el post. Tengo modificados en la pagina aspx el uiculture y culture por "ru-Ru". Tengo el web.config modificado el globalization con culture="ru-Ru" uiculture="ru-Ru" requestenconding="Unicode" responseEncoding="Unicode".

Haciendo experimentos lo que he detectado y estoy casi seguro al 100%, que el problema es en el momento que las variables de la pagina web recuperan la información del procedimiento almacenado. En la base de datos se guardan los caracteres en ruso. El procedimiento almacenado ejecutándolo desde el SQLquery también recuperar los caracteres rusos. Si en la web pongo los caracteres ruso directamente también me los muestra y ejecutando paso a paso la web en el momento que recupero los datos del procedimiento almacenado ya aparecen las puñeteras interrogaciones.

Si alguien sabe donde este mi gran desconocimiento de estos caracteres tan bonitos del cirilico le agradecería mucho que echase un poco de luz sobre este gran agujero.

Muchas gracias

🗨️ 4
BocaDePez
BocaDePez

Hola a todos:

Soy el bocadepez que abrió el post. El tema ya esta solucionado. En cuanto termine de comprobar todo os poco lo que e hecho para tener el cirilico funcionando al 100%.

Un saludo

🗨️ 3
LineBenchmark

A mi me matan cosas cómo ésta:

If cmd_cargar("titulo").Value Is DBNull.Value Then

Else

.......

......

End if

:D

Saludos.

🗨️ 2
y0k3s3

A mi directamente me mata ver que alguien pica en vb.net en vez de c#

Por cierto EF o LINQ to SQL ya existen...

🗨️ 1
BocaDePez
BocaDePez

Bocadepez, cual fue tu solución??

🗨️ 2
oreretaboy

Hola:

Soy el bocadepez que en su día abrió esta discusión. La solución fue la siguiente y muy sencilla:

A la hora de recuperar los datos originalmente lo hacia con ADODB.DataTypeEnum.adVarChar y lo solucione poniendo ADODB.DataTypeEnum.adVarWChar.

Se que parece una tontería como una catedral, pero solamente fue eso.

Un saludo gente

🗨️ 1
LineBenchmark

EDITO:

Reabro el tema para decirte algo.

Te he contestado al correo que presuntamente me has enviado, pero se ve que el servidor de correo que usas me 'rechaza' porque me has/han bloqueado. Así que no recibirás respuesta. Podría hacerlo con otra cuenta que desconoces, pero paso.

sender is blacklisted

Cómo te has despachado a gusto sin razón aparente, dejaré sólo esta rama abierta un tiempo por si quieres comentar algo más ya que por correo y en privado no es viable, y no por mi. Para la próxima, que te ayuden en esos otros foros que mencionas. Y aprende a usar el NOT, que es algo básico y menos escupir a la cara de los demás cuando te indiquen dónde mejorar el código. :)

EDIT 2:
Cerrando de nuevo después de dejar pasar un tiempo prudencial.