2009-07-28 14 views
5

Estoy intentando mover Excel-Data a MySQL, pero tengo problemas con la codificación.Salida UTF-8 con CakePHP

Lo que hice:

  1. Exportación de datos de OpenOffice 3.1 como csv (UTF-8 codificado)
  2. importación a phpMyAdmin a través de la carga de archivos (tabla de codificación: 'utf8_unicode_ci ')

En phpMyAdmin's ver modo, los datos se muestran correctamente (que está usando UTF-8 como juego de caracteres):

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

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

Sistema de Información-

  • El lenguaje que intenta conseguir en mi página: alemán
  • MySQL versión del cliente: 5.0.32
  • Mi sistema operativo: Mac OS X 10.5.7
  • servidor-script: CakePHP v1.2.3.8166

cordiales, Benedikt

Respuesta

20

que tenían un síntoma similar, mi solución fue añadir

'encoding' => 'UTF8' 

a config/database.php

+2

No se pierda, esta línea existe en configuración predeterminada. Pero fue comentado. – trante

+1

Muchas gracias. me salvaste –

+0

Esta es la solución más correcta, simple y efectiva que guardó mi aplicación. Tenía una tabla completa con registros de codificación ASCII y esta línea me ahorró un montón de llamadas a 'utf8_encode()' –

-1

¿Está usted conectando a UTF-8 con mysql?

SET NAMES 'UTF-8' 
2

He tenido un problema similar a este. La mayoría de las cosas están configuradas correctamente "fuera de la caja", pero me gustaría señalar las siguientes cosas que encontré útiles ... Llegué a este problema al pasar de dev a live:

Debes tener coincidencias Codificación de la base de datos (2 elementos para verificar), así como la codificación de la vista.

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

La configuración de la base de datos está, por supuesto, configurada en su base de datos. En mi caso, usando MySQL workbench, esto fue simplemente un caso de hacer clic derecho en el esquema y seleccionar "Alterar esquema ...". Desde allí pude seleccionar la codificación/colación que quería.

En Cake PHP, la codificación de la base de datos se establece en la aplicación \ Config \ database.php.Debe asegurarse de que el conjunto DATABASE_CONFIG (aproximadamente la línea 60) tenga activada/seleccionada la codificación 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 la aplicación de archivo \ Config \ core.php (aprox línea 82).

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

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

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