Zend Framework 的一个bug, 居然不能设置数据库读取时的字符编码...
2010-07-30 17:04
411 查看
今天在用Zend Framework 1.9.8 的时候,发现页面输出的总是乱码,数据库的字段编码、文件编码、HTML输出编码都统一为了utf-8,居然还会出现乱码,相当晕。。。
通过排查发现是从数据库中读数据的时候出现了乱码,但是我已经按照ZF的方式在配置文件application.ini 中添加了语句resources.db.charset = utf8 却还是不行,于是我试着在Model 里面加入语句die(var_export(self::$_defaultDb->getConfig())) 进行调试,发现配置数据中的charset 居然是NULL ...
后来我想跟踪源码看看是在哪一步把这个值给丢了,无奈ZF过于庞大、加上没有好的跟踪方法,只能放弃...
最后我是在Model 类里面的init 方法中加入了手动指定字符编码的语句才得以解决。。。
通过排查发现是从数据库中读数据的时候出现了乱码,但是我已经按照ZF的方式在配置文件application.ini 中添加了语句resources.db.charset = utf8 却还是不行,于是我试着在Model 里面加入语句die(var_export(self::$_defaultDb->getConfig())) 进行调试,发现配置数据中的charset 居然是NULL ...
array ( 'host' => 'localhost', 'username' => 'root', 'password' => '', 'dbname' => 'stache9_51peixun', 'charset' => NULL, //这里无论怎么设置都是NULL... 'persistent' => false, 'options' => array ( 'caseFolding' => 0, 'autoQuoteIdentifiers' => true, ), 'driver_options' => array ( ), )
后来我想跟踪源码看看是在哪一步把这个值给丢了,无奈ZF过于庞大、加上没有好的跟踪方法,只能放弃...
最后我是在Model 类里面的init 方法中加入了手动指定字符编码的语句才得以解决。。。
public function init() { self::$_defaultDb->query('SET NAMES "UTF8"'); }
相关文章推荐
- PL SQL Developer登陆Oracle提示客户端与数据库字符编码设置不一致
- 读取一个文件,将其Base64编码,每76个字符加一个换行
- 如何设置eclipse在新建了一个jsp文件之后将字符编码自动设为utf-8字符编码的?
- BufferedReader.readLine()读取文件第一行会出现bug,首行第一个字符会是一个空字符
- 读取一个文件,将其Base64编码,每76个字符加一个换行(转)
- 【Mysql】CentOS 环境下mysql 数据库字符编码设置
- C primer plus 第七章 练习2: 编写一个程序,该程序读取输入直到遇到#字符。使程序打印每个输入的字符以及它的十进制ASCII码。每行打印8个字符/编码对。
- php链接数据库时设置编码SET NAMES UTF8不能用UTF-8
- BufferedReader.readLine()读取文件第一行会出现bug,首行第一个字符会是一个空字符
- 设置eclipse在新建了一个jsp文件之后将字符编码自动设为utf-8字符编码
- C# PDF Page操作——设置页面切换按钮 C# 添加、读取Word脚注尾注 C#为什么不能像C/C++一样的支持函数只读传参 web 给大家分享一个好玩的东西,也许你那块就用的到
- 过滤器里设置编码,防止提交的数据不能写入数据库
- 从MySQL导出导入数据库的命令实例及设置会话字符编码
- 编写一个程序。该程序读取输入直到遇到#字符。使程序打印每个输入的字符以及他的十进制ASCII码。每行打印8个字符/编码对。
- 读取一个文件,将其Base64编码,每76个字符加一个换行
- 数据库字符编码的设置以及数据库中文乱码的解决方法
- webservice(第三天)(包含一个真实项目,读取EXCEL表格中的数据到数据库中,其中涉及真实的隐私数据不能公开数据集)
- 创建一个设置默认编码的数据库
- 发现IE7的一个问题,不能用索引取字符串中的单个字符
- iOS 富文本格式字符 以及处理iOS8下textview设置富文本后输入bug