No se puede tener el juego de caracteres UTF-8 correcto en php / java / mysql

Estoy desarrollando una aplicación con JAVA y PHP. Llamo al archivo php desde la clase JAVA, el php ejecuta consultas en el ddbb y devuelve el resultado. El problema es que no devuelve los caracteres correctamente. Quiero usar UTF-8, tengo al comienzo de mi archivo php this: header ("Content-type: text / html; charset = utf-8"); Pero no funciona. Si pongo una palabra directamente con caracteres extraños y hago eco, la palabra aparece correctamente, pero si la tomé del ddbb, no lo hace.

Las funciones mb_internal_encoding devuelve ISO-8859-1 pero si lo configuro en utf-8 tampoco funciona

No sé si he explicado correctamente el problema, perdón por mi inglés.

Gracias

Respuesta 1

Deberías preferir el siguiente método si tienes php 5.3.6+

$pdo = new PDO("mysql:host=localhost;dbname=world;charset=utf8", 'my_user', 'my_pass');

La razón es que, de lo contrario, el escape de cadena no se manejará correctamente. Esto es importante porque php todavía usa de manera predeterminada la emulación de declaraciones preparadas para mysql, por lo que depende en gran medida de que la real_escape_string interna pueda identificar el conjunto de caracteres adecuado. La configuración del conjunto de caracteres a través de "SET NAMES ..."no actualizará la configuración interna del conjunto de caracteres utilizada por real_escape_string.

resumen: puede ser vulnerable a los ataques de inyección sql si no utiliza el método anterior. Digo mayo, porque depende de los juegos de caracteres iniciales y finales.

alternativamente, puede configurar pdo para que no emule declaraciones preparadas.

referencia: http://www.php.net/manual/en/mysqlinfo.concepts.charset.php

Respuesta: 2

En primer lugar, esto va a sonar como tarea, pero no lo es. Solo un problema que estoy tratando de resolver en el trabajo. Tengo una lista de objetos, los objetos tienen un número de secuencia que indica su orden en ...

Queremos subir varios archivos a Google Cloud Storage. Actualmente, estamos cargando uno por uno utilizando la API de Google Java. El código está debajo: public void uploadFile (File srcFile, String bucketName, ...

Quiero usar la conciencia de esquema de saxon sin desintegrar basex que ya se usa en nuestra base de código. ¿Hay alguna manera de reemplazar el procesador baseX Xquery con el esquema Xquery de saxon ...

Mi problema es este: me acabo de mudar a un nuevo entorno de trabajo con una red muy lenta y muy limitada. Me estoy conectando a Apache Tomcat y recibo un bit de JSON codificado en cadena (<200 ...