2008-12-08 4 views
5

Estoy trabajando en un sitio ASP clásico anterior, y hay un formulario que permite al usuario ingresar texto (en un cuadro de texto de líneas múltiples), y si agregan un carácter html como ® (registrar marca), lo inserta correctamente. Pero cuando vayan a editar los datos, utilizando el mismo formulario, la actualización agregará un "A" aleatorio (acento circunflejo) delante de la marca registrada. El tipo de contenido es utf-8.Gremlims ASP clásicos, obteniendo un  insertado en el texto cada vez que se usa un carácter especial HTML

¿Alguna idea?

Gracias por darme esto en cualquier momento. Me ha estado volviendo loco. -m

Respuesta

2

Voy a adivinar que el editor que está utilizando no funciona con UTF-8, y está convirtiendo todo a ASCII.

La respuesta simple es dejar de usar caracteres especiales en las páginas HTML. El símbolo de copyright debe escribirse como © o ©.

+0

Pardon la objeción, pero no puede ser la lectura del texto en formato ASCII ASCII porque no es compatible con las letras acentuadas o el símbolo de derechos de autor. Tiene que estar usando una codificación de ocho bits como ISO-8859-1 o Windows-1252. –

1

Según mi experiencia con este problema exacto, encontré que estos caracteres aparecían mucho porque 1) el usuario estaba usando un conjunto de caracteres (y teclado) no ingleses cuando se ingresó el contenido (es decir, español) y 2) El contenido no se convirtió a UTF-8. Estás en el camino correcto, verificando el tipo de contenido en el encabezado, pero realmente tienes que ejecutar el contenido a través de un convertidor, si esto sigue sucediendo. Este problema me causó horas de dolor, hace muchos años, con ASP clásica (ojalá todavía tuviera acceso al código para ser de ayuda adicional).

0

® es lo que ® se ve si se almacena como UTF-8, pero se muestra como ASCII/ISO-8859-1/Windows-1252. El uso de la etiqueta meta no es suficiente para asegurarse de que su página se sirve como UTF-8. También deberá establecer la codificación en el encabezado HTTP Content-Type. Este encabezado generalmente se establece con alguna configuración de todo el servidor o programáticamente.

No sé ASP, pero esto parece ser la forma en que se deben establecer encabezado:

HtmlEncode UTF-8

y esto podría dar algo más de información:

http://technet.microsoft.com/en-us/library/bb742422.aspx#EBAA

Si sus datos se almacenan en una base de datos, también deberá asegurarse de que los datos también se almacenen en UTF-8 o se conviertan al almacenarlos y recuperarlos.

11

El problema fundamental es el impacto de Response.Codepage en las publicaciones del formulario.

Cuando envía un formulario a un cliente especificando que el contenido está codificado como UTF-8, el navegador asumirá que el contenido de las publicaciones del formulario debe enviarse codificado como UTF-8.

Ahora la página de acción que recibe el mensaje será (un tanto contra-intuatively) utilizar el valor de Response.Codepage que le informe de cómo se codifican los caracteres en el puesto. Esto no es obvio porque tendemos a pensar que es el trabajo del remitente definir la codificación de lo que está enviando. Tampoco es un salto natural pensar que una propiedad que tenga que ver con la codificación de lo que queremos enviar en nuestra respuesta tendría algo que ver con la forma en que se recibe la solicitud inicial. En este caso, sí.

Cuál es su forma está publicando una versión codificada UTF-8 del carácter pero la página que recibe no tiene su respuesta.Página de códigos establecida en 65001 (la página de códigos UTF-8). Su probablemente ajustado a la página de códigos OEM como los sistemas de 1252. De ahí que la codificación UTF-8 para el personaje es interpretado como dos caracteres individuales.

Mis recomendaciones para el buen carácter de manipulación en ASP son: -

  • Guardar todas las páginas como UTF-8
  • Incluir <% @ página de códigos = 65001 en la parte superior de todas las páginas
  • Incluir <% Response.CharSet = "UTF-8" %> en la parte superior todas las páginas
  • tienda registró datos en un tipo de campo unicode como SQL tipo Servidores NVARCHAR.

Lo importante aquí es que antes de leer los valores de formulario en una página ASP necesita asegurarse de que Response.Codepage esté configurado en una página de códigos que coincida con la codificación de remitentes y esto no sucede automáticamente.

+1

Recomendaciones viñetas anteriormente funcionaba perfectamente. – trebormf

+0

tengo que meter su cuchara también que las viñetas más arriba me rescataron de quién sabe cuántas horas de ir por el camino de pelo Brained obstinada disgusto consigo mismo por no ser capaz de averiguar por qué ** ** ™ no se pegue cuando salvado. Mi primera búsqueda produjo esta solución. Muchas gracias. –

Cuestiones relacionadas