存档

文章标签 ‘utf-8’

解决windows下vim乱码问题

2011年2月15日

习惯使用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, 电脑使用 , , ,

PHP 模拟 js unescape

2009年4月29日

在项目中处理浏览器器的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教程 , , ,