utf8_encode quitar ejemplo acentos javascript decode urldecode

quitar - unicode javascript



¿Cómo decodifico una cadena con unicode escapado? (5)

No estoy seguro de cómo se llama, así que tengo problemas para buscarlo. ¿Cómo puedo decodificar una cadena con unicode desde http/u00253A/u00252F/u00252Fexample.com a http://example.com con JavaScript? Intenté decodeURI , decodeURI y decodeURIComponent así que supongo que lo único que queda es string replace.

EDITAR: La cadena no está escrita, sino más bien una subcadena de otra pieza de código. Para resolver el problema, debes comenzar con algo como esto:

var s = ''http//u00253A//u00252F//u00252Fexample.com'';

Espero que eso muestre por qué unescape () no funciona.



No tengo suficientes representantes para poner esto en comentarios a las respuestas existentes:

unescape solo está en desuso por trabajar con URI (o cualquier UDF-8 codificado), que probablemente sea el caso para las necesidades de la mayoría de las personas. encodeURIComponent convierte una cadena js a UTF-8 escapado y decodeURIComponent solo funciona en bytes UTF-8 escapados. Arroja un error para algo como decodeURIComponent(''%a9''); // error decodeURIComponent(''%a9''); // error porque ascii extendido no es válido utf-8 (aunque sigue siendo un valor unicode), mientras que unescape(''%a9''); // © unescape(''%a9''); // © Entonces necesitas saber tus datos cuando uses decodeURIComponent.

decodeURIComponent no funcionará en "%C2" o en ningún byte solitario sobre 0x7f porque en utf-8 indica parte de un sustituto. Sin embargo decodeURIComponent("%C2%A9") //gives you © Unescape no funcionaría correctamente en ese // © Y no arrojaría un error, por lo que unescape puede generar un código erróneo si no conoces tu datos.


Respuesta original:

unescape(JSON.parse(''"http//u00253A//u00252F//u00252Fexample.com"'')); > ''http://example.com''

Puede descargar todo el trabajo a JSON.parse

Editar (2017-10-12) :

@MechaLynx y @ Kevin-Weber observan que unescape() está en desuso de los entornos que no son del navegador y no existe en TypeScript. decodeURIComponent es un reemplazo decodeURIComponent . Para una compatibilidad más amplia, use la siguiente información:

decodeURIComponent(JSON.parse(''"http//u00253A//u00252F//u00252Fexample.com"'')); > ''http://example.com''


Tenga en cuenta que el uso de unescape() está en deprecated y no funciona con el compilador de TypeScript, por ejemplo.

En base a la respuesta del radicando y la sección de comentarios a continuación, aquí hay una solución actualizada:

var string = "http//u00253A//u00252F//u00252Fexample.com"; decodeURIComponent(JSON.parse(''"'' + string.replace(//"/g, ''//"'') + ''"''));

http://example.com


ACTUALIZACIÓN : tenga en cuenta que esta es una solución que debería aplicarse a navegadores antiguos o plataformas que no sean de navegador, y se mantiene activa con fines educativos. Consulte la respuesta de @radicand a continuación para obtener una respuesta más actualizada.

Esta es una cadena unicode, escapada. Primero se escapó la cadena, luego se codificó con Unicode. Para convertir de nuevo a la normalidad:

var x = "http//u00253A//u00252F//u00252Fexample.com"; var r = ///u([/d/w]{4})/gi; x = x.replace(r, function (match, grp) { return String.fromCharCode(parseInt(grp, 16)); } ); console.log(x); // http%3A%2F%2Fexample.com x = unescape(x); console.log(x); // http://example.com

Para explicar: utilizo una expresión regular para buscar /u0025 . Sin embargo, dado que solo necesito una parte de esta cadena para mi operación de reemplazo, utilizo paréntesis para aislar la parte que voy a reutilizar, 0025 . Esta parte aislada se llama grupo.

La parte gi al final de la expresión indica que debe coincidir con todas las instancias de la cadena, no solo con la primera, y que la coincidencia debe ser insensible a mayúsculas y minúsculas. Esto podría parecer innecesario dado el ejemplo, pero agrega versatilidad.

Ahora, para convertir de una cadena a la siguiente, necesito ejecutar algunos pasos en cada grupo de cada coincidencia, y no puedo hacerlo simplemente transformando la cadena. De forma útil, la operación de reemplazo de cadena puede aceptar una función, que se ejecutará para cada coincidencia. El retorno de esa función reemplazará la coincidencia misma en la cadena.

Utilizo el segundo parámetro que acepta esta función, que es el grupo que necesito usar, y lo transformo en la secuencia equivalente utf-8, luego uso la función incorporada de unescape para decodificar la cadena a su forma apropiada.