linux-linux环境下ANSI转换为UTF-8

使用vim打开linux文本文件,发现乱码。

1. 查询文件的编码格式

在Vim中可以直接查看文件编码,
:set fileencoding
即可显示文件编码格式。

[root@cdh01 2018-05-02]# vim 遗留问题1.txt
1¡¢×îºóÐÞ¸Äʱ¼äͬ²½                                                                                                     
:set fileencoding

[root@cdh01 2018-05-02]# vim 遗留问题1.txt
1¡¢×îºóÐÞ¸Äʱ¼äͬ²½                                                                                                 
  fileencoding=latin1             

发现编码格式为latin1。

2.Vim编码的详细介绍

  Vim和所有的流行文本编辑器一样,Vim可以很好的编辑各种字符编码的文件,这当然包括UCS-2,UTF-8 等流行的Unicode编码方式。
  Vim有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding (这些选项可能的取值请参考Vim在线帮助:help encoding-names),它们的意义如下:
  (1)encoding:Vim内部使用的字符编码方式,包括Vim的 buffer(缓冲区)、菜单文本、消息文本等。用户手册上建议只在.vimrc中改变它的值,事实上似乎也只有在.vimrc中改变它的值才有意义。
  (2)fileencoding:Vim中当前编辑的文件的字符编码方式,Vim保存文件时也会将文件保存为这种字符编码方式(不管是否新文件都如此),网上是这样介绍的,但是我这样做在.vimrc中定义为utf-8似乎没有作用,只能在打开vim文件时手动设置才会起效,不知道什么原因。
  (3)fileencodings:Vim启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将fileencoding设置为最终探测到的字符编码方式。因此最好将Unicode编码方式放到这个列表的最前面,将拉丁语系编码方式latin1放到最后面。
  (4)termencoding:Vim所工作的终端(或者Windows的Console窗口)的字符编码方式。这个选项在 Windows下对我们常用的GUI模式的gVim无效,而对Console模式的Vim而言就是Windows控制台的代码页,并且通常我们不需要改变它。

  再来记录一下Vim的多字符编码方式支持是如何工作的。
  (1)Vim启动,根据.vimrc中设置的encoding的值来设置buffer、菜单文本、消息文的字符编码方式。
  (2)读取需要编辑的文件,根据fileencodings中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding为探测到看起来是正确的字符编码方式,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
  (3)对比fileencoding和encoding的值,若不同则调用iconv将文件内容转换为encoding所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的buffer里,此时我们就可以开始编辑这个文件了。
  (4)编辑完成后保存文件时,再次对比fileencoding和encoding的值。若不同,再次调用iconv将即将保存的buffer中的文本转换为fileencoding所描述的字符编码方式,并保存到指定的文件中。

  由于Unicode能够包含几乎所有的语言的字符,而且Unicode的UTF-8编码方式又是非常具有性价比的编码方式(空间消耗比UCS-2小),因此建议encoding的值设置为utf-8。这么做的另一个理由是encoding设置为utf-8时,Vim自动探测文件的编码方式会更准确 (或许这个理由才是主要的;) 。我们在中文Windows里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为GB2312/GBK比较合适,因此 fileencoding建议设置为chinese(chinese是个别名,在Unix里表示gb2312,在Windows里表示 cp936,也就是GBK的代码页)。  

3.文本编码转换

方案1

在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
:set fileencoding=utf-8

方案2

iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如将一个UTF-8 编码的文件转换成GBK编码
iconv -f GBK -t UTF-8 file1 -o file2
[root@cdh01 2018-05-02]# iconv -c -f gb2312 -t utf-8 -o 遗留问题1.txt 遗留问题1.txt 
[root@cdh01 2018-05-02]# vim 遗留问题1.txt

1、最后修改时间同步

"遗留问题1.txt" [noeol] 1L, 28C        

不乱码,解决。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux下将UTF-8编码的文本批量转换ANSI编码的文本,可以使用一些工具和命令来实现。以下是一个简单的步骤: 1. 首先,确保你有一个已安装的文本编辑器,如Vim或Nano。你可以通过以下命令安装它们: - 对于Vim:`sudo apt install vim` - 对于Nano:`sudo apt install nano` 2. 在Linux终端中,进入包含需要转换的文本文件的目录。你可以使用`cd`命令切换到该目录。 3. 使用文本编辑器打开需要进行转换文件。例如,如果要使用Vim打开一个名为`input.txt`的文件,可以执行以下命令:`vim input.txt`。或者,如果要使用Nano打开该文件,可以执行:`nano input.txt`。 4. 在文本编辑器中打开文件后,按下`Esc`键进入命令模式。 5. 输入以下命令来进行编码转换: - 对于Vim:在命令模式下输入`:%!iconv -f UTF-8 -t ISO-8859-1`,然后按下`Enter`键。 - 对于Nano:按下`Ctrl`+`_`键(即`Ctrl`+`Shift`+`6`键)打开帮助菜单,然后输入`set charset latin1`并按下`Enter`键。 6. 保存文件并退出文本编辑器。在Vim中,你可以输入`:wq`并按下`Enter`键。在Nano中,你可以按下`Ctrl`+`O`键保存文件,然后按下`Ctrl`+`X`键退出。 7. 文件转换完成后,你会在当前目录中找到一个新的文件,它已经以ANSI编码的格式保存。你可以通过使用`file`命令来验证文件的编码是否正确。例如,输入`file input.txt`,它应该返回类似于`input.txt: ISO-8859 text`的结果。 请注意,这只是一个基本的步骤,具体操作可能因你所使用的文本编辑器或版本而有所不同。在执行此过程之前,最好备份你的文件以防万一。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值