Yii框架针对gbk编码的修改,CHtml可用,兼容php5.4
来源:互联网 发布:nodejs 数据库框架 编辑:程序博客网 时间:2024/05/09 19:28
如果你的Yii框架不得已要使用gbk编码,你要做的有四件事:
1.复制一份儿框架中的中文语言包出来改为gbk编码,放在protected/messages,然后配置文件的components段中加入
1
2
3
4
5
// gbk编码的语言包
'coreMessages'
=>
array
(
//'basePath'=>null,
'basePath'
=> dirname(
__FILE__
).DIRECTORY_SEPARATOR.
'..'
.DIRECTORY_SEPARATOR.
'messages'
,
),
2.复制一份儿框架中的i18n中关于中文的文件改为gbk编码,放在protected/i18n/data下
然后config/main.php中加入
1
'localeDataPath'
=>dirname(
__FILE__
).DIRECTORY_SEPARATOR.
'../i18n/data'
,
3.复制一份儿框架中的views/exception.php到protected/views/system,改一下里面的编码为gbk,默认是utf8,否则调试页面就乱码了。
4.修改CHtml类:
CHtml类使用了htmlspecialchars来格式化输出,但htmlspecialchars不支持gbk编码。
当然,你可以把htmlspecialchars的编码去掉,但php5.4这样做时,就会没有输出。
一共改两个方法,一个是encode,还有一个encodearray
如果你使用了apc的话,请修改框架目录中yiilite.php中对应的两个方法。
如果你不使用apc的话,并且像我一样不愿意修改框架本身,可以把Chtml复制一份出来然后使用Yii的classmap来自定义这个类的路径。然后在入口文件处来定义,例如我的:
1
2
3
require_once
(
$yii
);
// 重写yii class map,使用自定义的CHtml。 yiilite中的代码要手动修改不能使用此方法覆盖
Yii::
$classMap
=
array
(
'CHtml'
=>__DIR__.
'/../protected/extensions/helpers/CHtml.php'
);
下面是要修改的CHtml类中的两个方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public
static
function
encode(
$text
)
{
if
(PHP_VERSION <
'5.4.0'
) {
return
htmlspecialchars(
$text
,ENT_QUOTES);
}
else
{
if
(
strtolower
(Yii::app()->charset) ==
'utf-8'
) {
$charset
=
'UTF-8'
;
}
else
{
$charset
=
'ISO-8859-1'
;
}
return
htmlspecialchars(
$text
,ENT_QUOTES,
$charset
);
}
return
htmlspecialchars(
$text
,ENT_QUOTES,Yii::app()->charset);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public
static
function
encodeArray(
$data
)
{
$d
=
array
();
foreach
(
$data
as
$key
=>
$value
)
{
if
(
is_string
(
$key
))
$key
=self::encode(
$key
);
if
(
is_string
(
$value
))
$value
=self::encode(
$value
);
else
if
(
is_array
(
$value
))
$value
=self::encodeArray(
$value
);
$d
[
$key
]=
$value
;
}
return
$d
;
}
0 0
- Yii框架针对gbk编码的修改,CHtml可用,兼容php5.4
- Yii CHtml
- yii框架中的CHtml::activeRadioButtonList生成的单选框禁止换行的方法
- Yii CHtml的部分实例简单操作
- ecshop针对PHP5.6.26的修改
- 使用Yii框架CHtml助手生成城市下拉选择框
- YII CHTML::activeFileField 上传下载
- Yii Framework的CHtml::link支持锚点
- gbk编码的简介以及针对gbk文本飘红截断原理以及实现
- 针对 .NET 框架的安全编码指南
- 针对 .NET 框架的安全编码指南
- 针对 .NET 框架的安全编码指南
- 针对 .NET 框架的安全编码指南
- 针对 .NET 框架的安全编码指南
- 说点关于Yii的 Yii::app()->createUrl 与 CHtml::normalizeUrl 使用的问题
- 告别乱码,针对GBK、UTF-8两种编码的智能URL解码器的java实现
- 告别乱码,针对GBK、UTF-8两种编码的智能URL解码器的java实现
- 告别乱码,针对GBK、UTF-8两种编码的智能URL解码器的java实现
- 软件UI现存问题
- 链表的基本操作
- Java中的this
- gnu/stubs-64.h: 没有那个文件或目录
- 免费u盘数据恢复软件哪里找得到
- Yii框架针对gbk编码的修改,CHtml可用,兼容php5.4
- Response对象、HttpServletResponse简介、处理字节编码问题、实现动态文件下载
- Java Socket网络编程
- 从零开始:AE二次开发中获取A点到B点的最佳路径(5)
- JSP -- EL表达式
- Android内存优化
- 配置Spring数据源
- cocos2dx 控制台输出时 包含当前时间 自定义输出
- [Android初级]Android程序监听网络的连接状况,This is a demo!