使用codeigniter中文乱码问题

时间:2023-02-02 18:18:53

乱码问题应该是程序开发中比较常见的问题,这不,刚接触codeigniter就出现了乱码,具体的情况如下:小编在书写一个简单的model类调用数据表信息的时候(例如表中有一个name字段,现在需要查询出name为张三的数据,$this->db->get_where('test',array('name'=>'张三'));),结果却返回了空数组,但是数据表中明明有该信息呀,难道是sql语句有问题?于是乎使用$this->db->last_query()打印出来了sql语句,果然,sql语句中中文部分变成了乱码,文件编码问题?但是文件编码明明跟其他文件编码都是gb2312呀,想到这里我忽然想到codeigniter好像不是国人开发的,为什么会使用gb2312作为编码呢?难道是编辑器出问题了?小编习惯使用emeditor打开一个文件,为了验证是否是编辑器的问题,于是换了notepad++,同时打开一个codeigniter的现有文件,打开之后发现两者的编码居然不一样,同一个文件,emeditor打开是gb2312,而notepad++是utf-8  w/o  bom(有些版本打开codeigniter文件的时候好像显示为ansi as utf-8),经过查资料发现,codeigniter里面的php文件都是ansi编码,而emeditor(小编使用的版本为 13.0.5)好像没有ansi编码,会把它解析为默认编码,也就是gb2312,这也就是为什么小编错以为codeigniter的文件都是gb2312编码的原因,据说utf-8无bom向下兼容ansi,新建文件的时候只需要把文件建立为utf-8无bom即可,更改了文件编码然后再次测试,有数据返回了。

通过这件事,小编清楚的认识到了emeditor和ansi不能不说的故事,也明白想要确定一个文件的编码必须同时使用两种以上的编辑器打开,谨献给那些跟我一样使用emeditor遇到乱码的朋友。