with tipos sirve significado que para funciones array javascript utf-8 google-chrome-extension iso-8859-1 transcoding

tipos - ¿Cómo puedo transcodificar una cadena de Javascript a ISO-8859-1?



javascript string to function (2)

Tengo entendido que Javascript usa UTF-8 para sus cadenas

No no.

Cada página tiene su codificación de caracteres definida en metaetiqueta, justo debajo del elemento de encabezado

<head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>

o

<head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>

Además de eso, cada página debe ser editada con la codificación del juego de caracteres objetivo . De lo contrario, no funcionará como se esperaba.

Y es una buena idea definir su codificación de juego de caracteres objetivo en el lado del servidor.

Java <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> PHP header("Content-Type: text/html; charset=UTF-8"); C# I do not know how to...

Y podría ser una buena idea configurar cada archivo de script si usa caracteres sensibles (á, é, í, ó, ú, etc.).

<script type="text/javascript" charset="UTF-8" src="/PATH/TO/FILE.js"></script>

...

Así que mi teoría es que si transduzco la cadena a ISO-8859-1 antes de enviarla, debería resolver mi problema

No no.

El servidor de destino podría manejar cadenas que no sean ISO-8859-1 . Por ejemplo, Tomcat maneja en ISO-8859-1, sin importar cómo configure su página. Por lo tanto, en el lado del servidor, podría tener que configurar su solicitud de acuerdo con la configuración de su página.

Java request.setCharacterEncoding("UTF-8") PHP // I do not know how to...

Si realmente desea traducir la codificación del juego de caracteres objetivo, TRY de la siguiente manera

InternetExplorer formElement.encoding = "application/x-www-form-urlencoded; charset=ISO-8859-1"; ELSE formElement.enctype = "application/x-www-form-urlencoded; charset=ISO-8859-1";

O bien, debe proporcionar una función que obtenga la representación numérica, en conjunto de caracteres Unicode, utilizada por cada personaje. Funcionará independientemente de la codificación del juego de caracteres objetivo. Por ejemplo, á como Unicode Character Set es / u00E1;

alert("á without its Unicode Character Set numerical representation"); function convertToUnicodeCharacterSet(value) { if(value == "á") return "/u00E1"; } alert("á Numerical representation in Unicode Character Set is: " + convertToUnicodeCharacterSet("á"));

Aquí puedes ver en acción:

Puede usar este enlace como guía (ver escapes de JavaScript)

Se agregó a la respuesta original cómo implemento la funcionalidad jQuery

var dataArray = $(formElement).serializeArray(); var queryString = ""; for(var i = 0; i < dataArray.length; i++) { queryString += "&" + dataArray[i]["name"] + "+" + encodeURIComponent(dataArray[i]["value"]); } $.ajax({ url:"url.htm", data:dataString, contentType:"application/x-www-form-urlencoded; charset=UTF-8", success:function(response) { // proccess response }); });

Funciona bien sin ningún dolor de cabeza.

Saludos,

Estoy escribiendo una extensión de Chrome que funciona con un sitio web que usa ISO-8859-1. Solo para dar un contexto, lo que hace mi extensión es hacer que la publicación en los foros del sitio sea más rápida al agregar un formulario de publicación más conveniente. El valor del área de texto donde se escribe el mensaje se envía a través de una llamada Ajax (usando jQuery).

Si el mensaje contiene caracteres como á estos caracteres aparecen como á en el mensaje publicado. Obligar al navegador a mostrar UTF-8 en lugar de ISO-8859-1 hace que el á aparezca correctamente.

Tengo entendido que Javascript usa UTF-8 para sus cadenas, por lo que mi teoría es que si transduzco la cadena a ISO-8859-1 antes de enviarla, debería resolver mi problema. Sin embargo, parece que no hay una forma directa de hacer esta transcodificación en Javascript, y no puedo tocar el código del lado del servidor. ¿Algún consejo?

He intentado configurar el formulario creado para usar iso-8859-1 de esta manera:

var form = document.createElement("form"); form.enctype = "application/x-www-form-urlencoded; charset=ISO-8859-1";

Y también:

var form = document.createElement("form"); form.encoding = "ISO-8859-1";

Pero eso no parece funcionar.

EDITAR:

El problema realmente mintió en la forma en que jQuery estaba urlizando el mensaje (o algo en el camino), lo arreglé diciéndole a jQuery que no procesara los datos y que no lo haga yo mismo como se muestra en el siguiente fragmento:

function cfaqs_post_message(msg) { var url = cfaqs_build_post_url(); msg = escape(msg).replace(//+/g, "%2B"); $.ajax({ type: "POST", url: url, processData: false, data: "message=" + msg + "&post=Preview Message", success: function(html) { // ... }, dataType: "html", contentType: "application/x-www-form-urlencoded" }); }


Tuve un problema muy similar. Necesitaba pasar un parámetro de URL usando JQuery para hacer una llamada ajax, y la mayoría de las veces los valores de los parámetros incluían acentos.

Ambas páginas tenían que configurarse en charset = ISO-8859-1 y las funciones de javascript: encodeURI, encodeURIComponent, etc. solo usa UTF-8.

Lo que hice fue crear un enlace en la página original, incluidos todos los parámetros sin codificación, digamos:

var myLink = document.getElementById("myHiddenLink"); myLink.setAttribute("href", "México, Perú, María and any other words with accents and spaces");

y luego asigne el valor href a una variable, como esta:

var theLink = myLink.getAttribute("href");

Entonces, finalmente, el valor de la variable "TheLink" fue codificado con ISO-8859-1, y todo funcionó bien.