2010-07-09 3 views
4

나는 이상한 것을 발견했다. Zend Framework 1.10을 Zend_Db_Table 모듈과 함께 사용하여 데이터베이스에서 데이터를 읽는다. 데이터베이스 자체, 테이블 및 해당 필드의 데이터 정렬은 모두 "utf8_general_ci"로 설정되고 모든 특수 문자는 phpMyAdmin을 사용하여 선택하면 DB에 올바르게 표시됩니다. 또한, Zend_Db_Table로 저장하는 것은 잘 작동하지만, 데이터를 읽은 다음 브라우저에 표시하면 UTF8이 아닌 ISO-8859-1로 반환됩니다. DB에서 반환 된 값에서 json_encode (입력으로 UTF8 문자열로만 작동하는)를 사용하려고 할 때도 똑같은 것으로 나타났습니다.젠드 (Zend) DB와 인코딩

Zend_Db_Table/Zend_Db_Row가 항상 UTF8에서 작동하고 UTF8 값을 반환하도록 설정하려면 어떻게해야합니까? 내 애플 리케이션에서 아직 인코딩에 관한 아무것도 설정하지 않았습니다.

도움을 주셔서 감사합니다. 이 또한

답변

12

메모. 내 경우에는이 하나 도움 :

$this->db = new Zend_Db_Adapter_Pdo_Mysql(array(
     'host'  => $config['db_hostname'], 
     'username' => $config['db_username'], 
     'password' => $config['db_password'], 
     'dbname' => $config['db_database'], 
     'charset' => 'utf8' 
    )); 
+0

에, 그러나 @robertbasic 아래에 댓글로 "resources.db.params.charset = utf8"응용 프로그램 ini에서 문제가 해결되었습니다. – ktamlyn

+0

upvotes가 (@ robertbasic의 설명과 함께)이 해결책을 분명히 선호하기 때문에 이것을 허용 된 대답으로 만드십시오. – Robin

1

,이 작업을 수행하려고 DB-driver는 적절한 쿼리를 실행합니다 (사용 된 DBMS에 따라 다름). 현재 (버전 1.10.5) 거의 모든 드라이버가이를 지원하는 것으로 보입니다.

+9

쉽게 그냥 추가 :'resources.db.params.charset = utf8'이 나에게 위해하지 않았다 당신의있는 App.ini – robertbasic

0

방금 ​​넣어 설정으로 원하는 값으로 키를 "문자셋"수 있습니다 : 어떤 점에서 다른 사람을 도움이

$db = Zend_Db::factory($config->database); // Setting up the DB 
$db->query("SET NAMES 'utf8';");   // That's the magic line I was missing 

희망 : 좋아 그냥 해결책을 발견

4
resources.db.params.charset = utf8 

로버트 베이직과 같은.