习惯使用Linux下面的Vim,但是在windows平台下使用gvim时经常会出现乱码,这是因为vim下字符集是采用UTF-8的原因,加上以下代码即可解决该问题。
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")
set fileencoding=chinese
else
set fileencoding=utf-8
endif
"解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"解决consle输出乱码
language messages zh_CN.utf-8
Linux, 电脑使用
gvim, Linux, utf-8, vim
在项目中处理浏览器器的javascript escape处理后的Cookie时,需要将其unescape一下,然后进行保存.
但此时js escape后的编码默认是utf-8,而我的页面编码是gb2312, 代码也是采用的GB2312的格式,因此需要将所传的经过escape处理的中文件进行unescape,于是采用PHP模拟了一下js 的unescape功能.
PHP模拟JS的unescape功能, 代码如下:
/**
* 类JS unescape解码,将由页面所传进行了js escape编码的中文字符串解码为中文
* @var $str:js escape string
* @return str: 解码后的中文字符串
* @access private
*/
private function js_unescape($str) {
$ret = '';
$len = strlen ( $str );
for($i = 0; $i < $len; $i ++) {
if ($str [$i] == '%' && $str [$i + 1] == 'u') {
$val = hexdec ( substr ( $str, $i + 2, 4 ) );
if ($val < 0x7f)
$ret .= chr ( $val );
else if ($val < 0x800)
$ret .= chr ( 0xc0 | ($val >> 6) ) . chr ( 0x80 | ($val & 0x3f) );
else
$ret .= chr ( 0xe0 | ($val >> 12) ) . chr ( 0x80 | (($val >> 6) & 0x3f) ) . chr ( 0x80 | ($val & 0x3f) );
$i += 5;
} else if ($str [$i] == '%') {
$ret .= urldecode ( substr ( $str, $i, 3 ) );
$i += 2;
} else
$ret .= $str [$i];
}
return $ret;
}
PHP教程
escape, Javascript, unescape, utf-8
最近评论