es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir Unicode a UTF-16 en PHP

Tengo un texto Unicode que necesito convertir a UTF-16.

El problema que tengo es que el texto Unicode está guardado en la base de datos en formato UTF-16. Ahora necesito hacer una búsqueda, pero los datos POST traen el Unicode real al parámetro. Así que necesito convertirlo al formato UTF-16 para hacer la búsqueda.

El texto Unicode que intento buscar/convertir基本的

Cómo se guarda el texto en la base de datos\u57fa\u672c\u7684\u306a\u8105\u5a01\u4fdd\u8b77

He intentado el siguiente código que extraje de StackOverflow pero nada parece funcionar.

if (strlen($value) != strlen(utf8_decode($value))) {
$c = unpack(‘N’, mb_convert_encoding($value, ‘UCS-4BE’, ‘UTF-8’)); // devuelve un array [42]
$d = mb_check_encoding($value,”UTF-8″); // devuelve true
$e = utf8_encode($value); // devuelve 基本的
$f = mb_convert_encoding($value, ‘UCS-4BE’, ‘UTF-16’); // devuelve algunos caracteres extraños (stackoverflow ni siquiera permite publicar la pregunta con eso)
}

¿Alguien tiene alguna idea de cómo hacer esta conversión o cualquier otro camino alternativo que pueda tomar para completar la búsqueda?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para convertir el texto Unicode al formato UTF-16, puedes usar la función iconv de PHP. Así es cómo puedes modificar el código que proporcionaste:

    // asumiendo que $value contiene el texto Unicode
    if (strlen($value) != strlen(utf8_decode($value))) {
       // convertir Unicode a UTF-16
       $utf16 = iconv('UTF-8', 'UTF-16BE', $value);
    
       // usar $utf16 en la búsqueda
       // ...
    }
    

    Primero, verificamos si el texto está en formato UTF-8 (que se utiliza típicamente en aplicaciones web). Si lo está, lo convertimos a UTF-16 usando la función iconv con los codificaciones 'UTF-8' y 'UTF-16BE'. La variable resultante $utf16 puede luego ser usada en tu búsqueda.

Comments are closed.