Tengo una página que contiene un formulario. Esta página se sirve con el tipo de contenido text/html;charset=utf-8. Necesito enviar este formulario al servidor mediante ISO-8859-1 de la codificación de caracteres. Es esto posible con Internet Explorer?

Configuración accept-charset atributo para el elemento de formulario, como este, funciona para Firefox, Opera, etc. pero no en IE.

<form accept-charset="ISO-8859-1">
  ...
</form>

Edit: Este formulario es creado por Un servidor y será enviado al servidor B. no tengo control sobre el servidor B.

Si puedo configurar el servidor para servir contenido con el juego de caracteres ISO-8859-1 todo funciona, pero estoy buscando una manera de hacer este trabajo sin cambios a Un servidor de codificación. Tengo otra pregunta acerca de la configuración de la codificación en el servidor A.

11 Comentarios

  1. 35

    Hay un sencillo truco para esto:

    Insertar un oculto campo de entrada en el formulario con una entidad de la que sólo se producen en el conjunto de caracteres del servidor de su publicación (o hacer un GET) de acepta.

    Ejemplo: Si el formulario se encuentra en un servidor que sirve ISO-8859-1 y el formulario post a un servidor esperando UTF-8 insertar algo como esto en la forma:

    <input name="iehack" type="hidden" value="&#9760;" />

    Es decir luego «detectar» que el formulario contiene un carácter UTF-8 y el uso de UTF-8 al POST o GET. Extraño, pero funciona.

    • Esto no parece funcionar para la inversa de la situación. La publicación de un formulario que se mantiene en utf-8 página a un iso-8859-1 la página en otro servidor.
    • A la derecha, no va a funcionar de otra manera. Cuando se especifique algo así como «&#255;» que es el «más alto» Char en el ISO-8859-1 caracteres, esto obviamente es un código UTF-8, también. Así que, es decir, por lo tanto piensa que es UTF-8. Por lo que sólo funciona cuando el conjunto de caracteres de destino tiene una mayor cantidad de personajes.
    • esta solucionado mi problema cuando IE8 y IE9 no estaban respetando accept-charset=’utf-8′, gracias!
    • No me funciona en IE8, por favor, consulte la prueba
    • No funciona para IE11
    • esto no no trabajo en UTF-8 páginas más universal de la solución en IE ver la respuesta de dgaspar a continuación.

  2. 32

    Con decente navegadores:

    <form accept-charset="ISO-8859-1" .... >

    Con IE (cualquiera):

    document.charset = 'ISO-8859-1'; //do this before submitting your non-utf8 <form>!
    • Este parece resolver los problemas de IE (cuando JavaScript está habilitado en el navegador), y se puede implementar mediante el atributo onsubmit="document.charset = 'ISO-8859-1'" en el form etiqueta.
    • El Accept-Charset encabezado se utiliza para indicar al servidor que juego de caracteres es aceptable como respuesta (ver tools.ietf.org/html/rfc2616#section-14.2). A mí me parece que esta no es la manera correcta para especificar el juego de caracteres del documento enviado. Por norma, este debe agregarse como un charset parámetro para el tipo de contenido. No estoy seguro de cómo especificar esto en los formularios HTML, aunque :\
    • Después de cavar un poco más, me encontré con el enctype atributo en el elemento de formulario. Después de la descripción, esto parece más correcto. No lo he probado todavía, aunque.
    • el onsubmit = «documento.chartset = ‘ISO-8859-1′» hizo el truco. Sólo probado en IE 11.Gracias.
    • esa sección es acerca de «accept-charset» en la cabecera. OP es la declaración de accept-charset en el Formulario de marcado.
  3. 6

    Parece que esto no se puede hacer, no al menos con las versiones actuales de internet explorer (6 y 7).

    IE apoya forma de atributo accept-charset, pero sólo si su valor es ‘utf-8’.

    La solución es modificar el servidor a producir la codificación ISO-8859-1′ de la página que contiene el formulario.

    • Es decir, sólo utiliza accept-charset como una ‘copia de seguridad’, cuando ha fracasado a la hora de codificar una de los campos en la página del propio juego de caracteres. Especificar accept-charset, y usted no será capaz de decirle a la codificación que se utilizó. Por tanto, es absolutamente inútil; no debe utilizarse nunca. La única solución es, de hecho, para cambiar el juego de caracteres de la página (o iframe) que contiene el formulario.
  4. 5

    Tengo el mismo problema. Tengo un UTF-8 Página una necesidad de enviar a un ISO-8859-1 servidor.

    Parece IE no puede manejar ISO-8859-1. Pero puede manejar ISO-8859-15.

    <form accept-charset="ISO-8859-15">
      ...
    </form>

    Así que esto funcionó para mí, desde ISO-8859-1 y ISO-8859-15 son casi los mismos.

    • No. No funcionó para mí.
    • no se puede confirmar que para IE 11…
  5. 2

    Si usted tiene acceso a el servidor, convertir su procesamiento en UTF-8. El arte de presentar no UTF-8 formas es una larga y triste historia; este documento acerca de las formas y i18n pueden ser de su interés. Entiendo que no parece que se preocupan acerca de la ayuda internacional; siempre se puede convertir los datos de UTF-8 a entidades html para asegurarse de que permanece Latin-1.

    • Me importa mucho acerca de la ayuda internacional, y me gustaría seguir con mi aplicación en UTF-8 del mundo, pero esta página debe ser presentado en iso-8859-1 a un servidor externo.
  6. 1

    Sólo tengo el mismo problema y tengo una solución relativamente simple que no requiere ningún cambio en la página de la codificación de caracteres(que es un dolor en el culo).

    Por ejemplo, su sitio está en utf-8 y quieres publicar un formulario en un sitio en iso-8859-1. Acabo de cambiar la acción de los post a una página en su sitio web que va a convertir los valores expuestos de utf-8 a iso-8859-1.

    esto podría hacerse de forma sencilla en php con algo como esto:

    <?php
    $params = array();
    foreach($_POST as $key=>$value) {
        $params[] = $key."=".rawurlencode(utf8_decode($value));
    }
    $params = implode("&",$params);
    
    //then you redirect to the final page in iso-8859-1
    ?>
    • Es una buena idea, pero esto puede ser bastante complicado si usted está tratando de enviar información de inicio de sesión y la necesidad de manejar las cookies y esas cosas. Esto se podría hacer con CURL, pero es realmente un dolor para hacerlo funcionar.
  7. 1

    De símbolos ruso «windows-1251′

    <form action="yourProcessPage.php" method="POST" accept-charset="utf-8">
    <input name="string" value="string" />
    ...
    </form>

    Cuando simplemente convertir la cadena a cp1251

    $string = $_POST['string'];
    $string = mb_convert_encoding($string, "CP1251", "UTF-8");
    • Aunque en sí mismo, esto no responde a la pregunta de por sí, creo que esta es una solución mucho mejor. Usted debe de todos modos siempre trabajar con UTF-8. Dicho esto, si usted cree un formulario que se envía a un servidor a través de la cual usted no tiene control, no funcionan de esta manera.
  8. 0

    Estoy bastante seguro de que no va a ser posible con las versiones antiguas de IE. Antes de la accept-charset atributo fue concebido, no había manera de que form elementos para especificar la codificación de caracteres que aceptaron, y el mejor que los navegadores podría hacer es asumir la codificación de la página el formulario está en la voluntad de hacer.

    Es un poco triste que usted necesita saber de la codificación que se usa hoy en día podemos esperar de nuestra web marcos para cuidar esos detalles de forma invisible y exponer los datos de texto de la aplicación como las cadenas Unicode, ya decodificado…

  9. 0

    Se parece a Microsoft sabe accept-charset, pero su doc no dice para qué versión de que comience a trabajar…

    No dices en que las versiones de navegador que probado.

  10. 0

    Me parece recordar que Internet Explorer se confunde si accept-charset codificación no coincide con la codificación especificada en el encabezado de tipo de contenido. En tu ejemplo, usted reclamar el documento se envía como UTF-8, pero desea que el formulario se envía en ISO-8859-1. Trate de coincidencia de ellos y ver si eso soluciona tu problema.

    • Tengo un problema similar. La aplicación sirve la respuesta como utf-8 y en la forma que se especifica accept-charset=»utf-8″ pero con IE8 recupera los valores con formato incorrecto. ¿Cuál es la mejor configuración para trabajar con formularios con Internet Explorer? Gracias.
  11. -2
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Dejar respuesta

Please enter your comment!
Please enter your name here