注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Computer Science

I Pressed My Words Here. Will You Read ?

 
 
 

日志

 
 

关于字符编码的一些经历  

2011-01-30 17:40:07|  分类: With Ubuntu |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在Linux下使用VI/VIM文字编辑器工作的汉语人,估计都会遇到文字编码的问题。我也同样,经历了改写配置文件后,自以为一切都会顺利。
可是,最近又遇见了和字符编码有关的问题。
系统上有别人传来的文件,是GBK编码方式的,需要批量改写文件编码方式,否则,我就得改变系统的默认编码方式(这会很恐怖的~)。
------------------------------------
通过伟大的Google,我找到了两种解决方案,当然这也是众多地球人的智慧结晶:
A方案,自然是改变文件的格式啦~
B方案,临时改变系统的环境,但是又不会影响我们正常使用当前的操作系统。
------------------------------------
参考资料:
http://www.gnu.org/software/libiconv/
http://hi.baidu.com/tianyuanfeige/blog/item/791e9035645494bdd1a2d358.html
http://hi.chinaunix.net/?uid-20625595-action-viewspace-itemid-21287
http://blog.591by.com/show-180-1
-------------------------------------
具体的讲:
A方案:(仍然可以分出多种改变文件编码方式)
1.比较简单的就是用能正常显示,所要更改的文件的文本编辑器打开文件,并以所需的编码方式保存或另存为。
Windows下,大家可以用Notepad,选择另存为。
而我们在linux下,可以使用配置好了的VI 或 VIM编辑器,打开文件,再:w写入一次便行了。
(因为根据我的VIM的配置,其能自动识别UTF-8、GBK、GB2312等编码方式的文件。而其写入时,统一采用UTF-8编码方式。)
2.在linux终端下,调用iconv程序来帮助我们更改文件的编码方式。这里,你比需确定你所需要更改的文件,其本身是什么编码方式。然后才能使用这个iconv命令来正确更改文件编码方式为指定的编码方式。
输入iconv --version查看iconv的版本
will@will-HP-Compaq-6520s:~$ iconv --version iconv (Ubuntu EGLIBC 2.12.1-0ubuntu10.1) 2.12.1 Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Ulrich Drepper.

比如我们要将GBK编码方式的文件“sysIndex.jsp”转为UTF-8编码方式的sysIndex2.jsp文件:
首先cd到sysIndex.jsp文件坐在的目录。
接着执行命令:
iconv -f GBK -t UTF-8 sysIndex.jsp -o sysIndex2.jsp

如果当前目录下所有文件都需要从同一编码方式转换为另一个编码方式(存放到converted文件夹下),命令如下:
for i in *; do iconv -f GBK -t UTF-8 $i -o "./converted/$i"

如果当前目录下所有.jsp文件都需要从同一编码方式转换为另一个编码方式,命令如下:
for i in *.jsp; do iconv -f GBK -t UTF-8 $i -o $i

更多请用命令man iconv查看。

B方案:
打开终端(我是在GUN下打开的)
输入:locale   查看当前的系统环境:
will@will-HP-Compaq-6520s:~$ locale
LANG=en_US.utf8
LANGUAGE=en_US:zh_CN:en_HK:en
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

输入LANG=zh_CN.GBK (这里不能简单的输入GBK):
再输入locale查看终端临时环境:
will@will-HP-Compaq-6520s:~$ locale
LANG=zh_CN.GBK
LANGUAGE=en_US:zh_CN:en_HK:en
LC_CTYPE="zh_CN.GBK"
LC_NUMERIC="zh_CN.GBK"
LC_TIME="zh_CN.GBK"
LC_COLLATE="zh_CN.GBK"
LC_MONETARY="zh_CN.GBK"
LC_MESSAGES="zh_CN.GBK"
LC_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEPHONE="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=

于是在这个终端中你便有了zh_CN.GBK的环境了。
接着想这里做什么就做什么吧~
computerScience推荐阅读:
  评论这张
 
阅读(660)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017