Pregunta

Estoy usando las siguientes instrucciones para obtener algunos registros de mi base de datos.

Cree los modelos necesarios (desde el módulo de parámetros):

$obj_paramtype_model    = new Params_Model_DbTable_Paramtype();
$obj_param_model        = new Params_Model_DbTable_Param();

Obtener los lugares disponibles de la base de datos

// This returns a Zend_Db_Table_Row_Abstract class object
$obj_paramtype = $obj_paramtype_model->getParamtypeByValue('available_locales');

// This is a query used to add conditions to the next sentence. This is executed from the Params_Model_DbTable_Param instance class, that depends from Params_Model_DbTable_Paramtype class (reference map and dependentTables arrays are fine in both classes)
$obj_select = $this->select()->where('deleted_at IS NULL')->order('name');

// Execute the next query, applying the select restrictions. This returns a Zend_Db_Table_Rowset_Abstract class object. This means "Find Params by Paramtype"
$obj_params_rowset = $obj_paramtype->findDependentRowset('Params_Model_DbTable_Param', 'Paramtype', $obj_paramtype);

// Here the firebug log displays the queries....
Zend_Registry::get('log')->debug($obj_params_rowset);

Tengo un perfilador para todas mis ejecuciones de DB de Zend. En este punto, los objetos de registro y perfilador (que incluye escritores de Firebug) muestra las consultas SQL ejecutadas y la última línea muestra el objeto de clase ZEND_DB_RAWSET_ABSTRACT resultante. Si ejecuto las consultas SQL en algunos clientes MySQL, los resultados son los esperados. Pero el escritor de registro de Zend Firebug muestra como NULL los valores de la columna con caracteres latinos (ñ).

En otras palabras, el cliente SQL externo muestraES_CO | Español de Colombia y EN_US | Inglés de Estados Unidos Pero los resultados de la consulta de Zend muestran (y devuelve) ES_CO | nulo y EN_US | Inglés de Estados Unidos.

He eliminado el ñ personaje de Español de Colombia Y los resultados de la consulta están bien en mi pantalla Firebug Firebug de Zend, y en el elemento final de formulario Zend.

La base de datos, tablas y columnas de MySQL se encuentran en UTF -8 - UTF8_Unicode_CI Collation. Todas mis páginas de Zend Framework están en Charset UTF-8. Estoy usando XAMPP 1.7.1 (PHP 5.2.9, Apache en el puerto 90 y MySQL 5.1.33-Community) que se ejecuta en Windows 7 Ultimate; Zend Framework 1.10.1.

Lo siento si hay tanta información, pero realmente no sé por qué podría suceder eso, así que intenté proporcionar la mayor cantidad de información relacionada como pude para ayudar a encontrar alguna respuesta.

¿Fue útil?

Solución

¿Cómo se hace la conexión con la base de datos y definió el charset en ese sentido? ¿Eso fue algo que pasé por alto y, como no puedo encontrarlo en su pregunta, ese podría ser el problema? Entonces, mientras uso el archivo .ini para configurar la base de datos, agregando

resources.db.params.charset = utf8

Resolvió todos mis problemas de consulta UTF8. Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top