convertir unicode a caracteres normales antes de mostrarlo en la página web

Estoy usando la clase openinviter para importar los contactos del correo electrónico. Sin embargo, muestra los Unicodes de caracteres que no están en inglés (por ejemplo, polaco), como u0117 (y tipos similares de otros códigos) en lugar de caracteres normales. ¿Hay alguna forma de que pueda convertir los Unicodes a caracteres y luego mostrarlos?

Aquí está el código original de la página: http://pastebin.com/d0tkpxbv

Gracias.

preguntado el 08 de enero de 11 a las 16:01

¿Que lenguaje? ¿Qué plataforma? ¿Puedes publicar tu código? -

Acabo de agregar el enlace en mi publicación original, verifique. Gracias. -

3 Respuestas

Use preg_replace () para convertir el valor a su entidad numérica hexadecimal:

<?php
$text = 'Wladisu0142aw';
$text = preg_replace('/u([0-9a-f]{4})/i', '&#x$1;', $text);
echo $text;  //displays Wladisław
?>

Respondido el 08 de enero de 11 a las 22:01

Esto no aborda el barra invertida que suele ser justo antes del u. Aquellos se quedarán atrás en el resultado. La $ texto la variable debe ser: Wladis \ u0142aw - datashaman

Respondido el 08 de enero de 11 a las 19:01

El siguiente código le permite decodificar los caracteres y volver a codificarlos si es necesario

Código :

if (!function_exists('codepoint_encode')) {

    function codepoint_encode($str) {
        return substr(json_encode($str), 1, -1);
    }

}

if (!function_exists('codepoint_decode')) {

    function codepoint_decode($str) {
        return json_decode(sprintf('"%s"', $str));
    }

}

Como utilizarlo :

header('Content-Type: text/html; charset=utf-8'); 

var_dump(codepoint_encode('ඔන්ලි'));
var_dump(codepoint_encode('සින්ග්ලිෂ්'));

var_dump(codepoint_decode('\u0d94\u0db1\u0dca\u0dbd\u0dd2'));
var_dump(codepoint_decode('\u0dc3\u0dd2\u0db1\u0dca\u0d9c\u0dca\u0dbd\u0dd2\u0dc2\u0dca'));

Salida :

string(30) "\u0d94\u0db1\u0dca\u0dbd\u0dd2"
string(60) "\u0dc3\u0dd2\u0db1\u0dca\u0d9c\u0dca\u0dbd\u0dd2\u0dc2\u0dca"
string(15) "ඔන්ලි"
string(30) "සින්ග්ලිෂ්"

Si desea una funcionalidad más compleja, consulte ¿Cómo obtener el carácter del punto de código Unicode en PHP?.

contestado el 23 de mayo de 17 a las 14:05

En su función de decodificación, debe escapar de las comillas dobles que podrían estar en $ str. De lo contrario, sucederán cosas malas. - datashaman

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.