时间 2009.9.17
环境 CentOS5 + VIM - Vi IMproved 7.0
症状 根据程序的编码应该生成utf8的汉字,而且系统的环境也是utf8的,用编码设成utf8的putty vim 这个文章看到的是乱码
所有代码直接粘贴到终端运行即可!
安装程序
代码:
sudo apt-get install vim-gtk vim-doc cscope
创建启动项
代码:
cat > /usr/share/applications/gvim.desktop < $HOME/.vimrc << "EOF"
"===========================================================================
" 项目: gvim 配置文件
" 作者: yonsan [QQ:82555472]
" 安装: sudo apt-get install vim-gtk
" 用法: 将本文件(.vimrc)拷贝到$HOME/
"===========================================================================
" 使用 murphy 调色板
colo murphy
" 设置用于GUI图形用户界面的字体列表。
set guifont=SimSun 10
"
set nocompatible
" 设定文件浏览器目录为当前目录
set bsdir=buffer
set autochdir
" 设置编码
set enc=utf-8
" 设置文件编码
set fenc=utf-8
" 设置文件编码检测类型及支持格式
set fencs=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
" 指定菜单语言
set langmenu=zh_CN.UTF-8
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
" 设置语法高亮度
set syn=cpp
"显示行号
set nu!
" 查找结果高亮度显示
set hlsearch
" tab宽度
set tabstop=4
set cindent shiftwidth=4
set autoindent shiftwidth=4
" C/C++注释
set comments=://
" 修正自动C式样注释功能
set comments=s1:/*,mb:*,ex0:/
" 增强检索功能
set tags=./tags,./../tags,./**/tags
" 保存文件格式
set fileformats=unix,dos
" 键盘操作
map gk
map gj
" 命令行高度
set cmdheight=1
" 使用cscope
if has("cscope")
set csprg=/usr/bin/cscope
set csto=0
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
" else add database pointed to by environment
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set csverb
endi
" 中文帮助
if version > 603
set helplang=cn
endi
EOF
locale为zh_CN.gbk的配置文件
代码:
cat > $HOME/.vimrc << "EOF"
"===========================================================================
" 项目: gvim 配置文件
" 作者: yonsan [QQ:82555472]
" 安装: sudo apt-get install vim-gtk
" 用法: 将本文件(.vimrc)拷贝到$HOME/
"===========================================================================
" 使用 murphy 调色板
colo murphy
" 设置用于GUI图形用户界面的字体列表。
set guifont=SimSun 10
"
set nocompatible
" 设定文件浏览器目录为当前目录
set bsdir=buffer
set autochdir
" 设置编码
set enc=chinese
" 设置文件编码
set fenc=chinese
" 设置文件编码检测类型及支持格式
set fencs=gbk,utf-8,ucs-bom,gb18030,gb2312,cp936
" 指定菜单语言
set langmenu=zh_CN.GBK
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
" 设置语法高亮度
set syn=cpp
"显示行号
set nu!
" 查找结果高亮度显示
set hlsearch
" tab宽度
set tabstop=4
set cindent shiftwidth=4
set autoindent shiftwidth=4
" C/C++注释
set comments=://
" 修正自动C式样注释功能
set comments=s1:/*,mb:*,ex0:/
" 增强检索功能
set tags=./tags,./../tags,./**/tags
" 保存文件格式
set fileformats=unix,dos
" 键盘操作
map gk
map gj
" 命令行高度
set cmdheight=1
" 使用cscope
if has("cscope")
set csprg=/usr/bin/cscope
set csto=0
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
" else add database pointed to by environment
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set csverb
endi
" 中文帮助
if version > 603
set helplang=cn
endi
EOF
:set fenc
" 设定文件编码 set fileencoding=utf-8 " 你可以设定多个,系统会依次尝试 set fileencodings=utf-8,gb18030,utf-16,big5 " 修改文件编码,以何种编码保存文件 :set fenc=utf-8
# 方法一
use Text::Iconv;
my $converter = Text::Iconv->new("gbk", "utf8");
my $converted = $converter->convert("$pagecontent");
# 方法二
use Encode;
my $converted = Encode::encode("utf8", Encode::decode("gbk", $pagecontent));# 这个太简单了,如果是文件就while <INPUT> 就行了,核心的匹配非常简单 $string =~ s/\r\n/\n/g;