Pergunta

Estou usando as próximas instruções para obter alguns registros do meu banco de dados.

Crie os modelos necessários (no módulo Params):

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

Obtendo os locais disponíveis do banco de dados

// 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);

Eu tenho um perfil de todas as minhas execuções de banco de dados da Zend. Nesse ponto, os objetos de log e perfil (que incluem escritores de Firebug) mostram as consultas SQL executadas e a última linha exibe o objeto ZEND_DB_TABLE_ROWST_ABSTRATT resultante. Se eu executar as consultas SQL em algum cliente MySQL, os resultados serão os esperados. Mas o escritor do Zend Firebug Log exibe como nulos os valores da coluna com caracteres latinos (ñ).

Em outras palavras, o cliente SQL externo mostraes_co | Español de Colômbia e en_us | Inglês dos Estados Unidos Mas os resultados da consulta dos displays Zend (e retornos) es_co | nulo e en_us | Inglês dos Estados Unidos.

Eu excluí o ñ personagem de Español de Colômbia E os resultados da consulta estão bem na minha tela Zend Log Firebug e no elemento final do formulário Zend.

O banco de dados, tabelas e colunas do MySQL está no UTF -8 - UTF8_UNICODE_CI COLATION. Todas as minhas páginas da estrutura Zend estão no UTF-8 charset. Estou usando o XAMPP 1.7.1 (Php 5.2.9, Apache na porta 90 e MySQL 5.1.33 Community) em execução no Windows 7 Ultimate; ZEND Framework 1.10.1.

Sinto muito se há tanta informação, mas eu realmente não sei por que isso poderia acontecer, então tentei fornecer o máximo de informações relacionadas para ajudar a encontrar alguma resposta.

Foi útil?

Solução

Como você faz a conexão com o banco de dados e definiu o charset nessa conexão? Isso foi algo que eu esqueci e, como não consigo encontrá -lo em sua pergunta, que pode ser o problema? Então, como eu uso o arquivo .ini para configurar o banco de dados, adicionando

resources.db.params.charset = utf8

Resolveu todos os meus problemas de consulta UTF8. Espero que isto ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top