用于做编码转换.
系统默认的文件编码与数据库编码为utf-8, 在多实际进行数据导出的为了兼容windows数据会采用gb2312. 因此需要进行编码. 为了兼容php的早期版本, 默认的处理方式性能上有一定的, 可根据需要进行扩展, 详情见下文
<?php
...
$this->charset = kernel::single('base_charset');
...
gb2312转utf8
参数: string $strForm 待处理字符串 返回: mixed 待处理的字符串或者false
gb2312转utf8
参数: string $strForm 待处理字符串 返回: mixed 待处理的字符串或者false
unicode转utf8
参数: string $str 待处理字符串 返回: mixed 待处理的字符串或者false
utf8转unicode
参数: string $str 待处理字符串 返回: mixed 待处理的字符串或者false
去掉utf8bom头
参数: string $str 待处理字符串 返回: mixed 待处理的字符串或者false
判断是否是utf-8字符集
参数: string $word 待处理字符串 返回: mixed 待处理的字符串或者false
本类的实现类似于设计模式当中的proxy模式, 本类所提供的所有函数实际上都是调用由service提供的,service_box: base_charset, 需要implements接口类base_charset_interface
<?php
interface base_charset_interface{
public function local2utf($strFrom,$charset='zh'); //gb2312转utf8
public function utf2local($strFrom,$charset='zh'); //utf8转gb2312
public function u2utf8($str); //unicode 转 utf8
public function utf82u($str); //utf8 转 unicode
public function replace_utf8bom($str); //去掉utf8bom头
public function is_utf8($word); //判断是否utf-8
}
查看一下默认的编码转换类
./cmd dev:show services | grep -i base_charset base_charset base_charset_default
默认提供服务的是base_charset_default. 为了兼容php老版本, 没用到php系统级函数, 而是采用了相对低效和保守的方案.
如果你更关注性能, 可以自己实现并注册到service_box: base_charset, 可以直接调用系统级的函数来实现, 实现起来比较简单
补充知识: 编码转化函数 iconv — Convert string to requested character encoding(PHP 4 >= 4.0.5, PHP 5) mb_convert_encoding — Convert character encoding(PHP 4 >= 4.0.6, PHP 5)