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?
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: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.