Salida UTF-8 con CakePHP

Estoy tratando de mover algunos Excel-Data a MySQL, pero tengo problemas con la encoding.

Lo que hice:

  1. Exportación de datos desde OpenOffice 3.1 como csv (codificado en utf-8 )
  2. Importe a phpMyAdmin a través de la carga de archivos (encoding de tabla: ‘ utf8_unicode_ci ‘)

En el modo de vista de phpMyAdmin, los datos se muestran correctamente (está usando utf-8 como juego de caracteres):

 

Cuando bash mostrar los datos en mi página web, aparece un hash con un signo de interrogación.

Información del sistema

  • El idioma que trato de poner en mi página: alemán
  • Versión de cliente MySQL: 5.0.32
  • Mi sistema operativo: MAC OS X 10.5.7
  • Server-Script: CakePHP v1.2.3.8166

Saludos, Benedikt

Tuve un síntoma similar, mi solución fue agregar

 'encoding' => 'UTF8' 

a config / database.php

He tenido un problema similar a esto. La mayoría de las cosas se configuran correctamente “fuera de la caja”, pero me gustaría señalar las siguientes cosas que me parecieron útiles … Me di cuenta de este problema mientras me movía de dev a vivir:

Debe tener la encoding de la base de datos coincidente (2 elementos para verificar), así como la encoding de la vista.

  • Su encoding DB se configura en el esquema.
  • Cake PHP puede ser forzado manualmente a esperar un tipo de encoding de la base de datos.
  • Cake PHP también necesita llamar a la encoding correcta para la vista.

Los ajustes de DB están, por supuesto, configurados en su base de datos. En mi caso, utilizando el banco de trabajo MySQL, este fue simplemente el caso de hacer clic derecho en el esquema y seleccionar “Alterar esquema …”. Desde allí pude seleccionar la encoding / colación que quería.

En Cake PHP, la encoding de la base de datos se establece en app \ Config \ database.php. Debe asegurarse de que la matriz DATABASE_CONFIG (aproximadamente la línea 60), tenga habilitada / seleccionada la encoding correcta. Por ejemplo:

 'encoding' => 'utf8' 

Finalmente, la vista debe seleccionar la versión correcta de HTML para mostrar. Esto está escrito en sus plantillas desde el archivo de aplicación \ Config \ core.php (línea 82 aproximadamente).

 Configure::write('App.encoding', 'UTF-8'); 

Una vez que se cambian las tres partes, debe tener un conjunto de caracteres consistente y, por lo tanto, mostrar.

Espero que ayude a cualquier persona que todavía esté buscando esto.

¿Está configurando la conexión a UTF-8 con mysql?

 SET NAMES 'UTF-8' 
 $conn1 = mysqli_connect($this->db_host, $this->db_username, $this->db_password, $this->db_name); 

Agrega esto en conexión

mysqli_set_charset($conn1,"utf8mb4");