在Linux如何让更改文件的字符编码

 

问题在个人 Linux 系统中有一个编码为 iso-8859-1 的字幕文件,其中部分字符没法正常显示,我想把文本改成 utf8 编码。在 Linux 中, 有没有一个好的工具来转换文本文件的字符编码?web

 

 

正如咱们所知道的那样,电脑只可以处理低级的二进制值,并不能直接处理字符。当一个文本文件被存储时,文件中的每个字符都被映射成二进制值,实际存储在硬盘中的正是这些“二进制值”。以后当程序打开文本文件时,全部二进制值都被读入并映射回原始的可读字符。只有当全部须要访问这个文件的程序都可以“理解”它的编码,即二进制值到字符的映射时,这个“保存和打开”的过程才能很好地完成,这也确保了可理解数据的往返过程。工具

 

若是不一样的程序使用不一样的编码来处理同一个文件,源文件中的特殊字符就没法正常显示。这里的特殊字符指的是非英文字母的字符,例如带重音的字符(好比 ñ,á,ü)。编码

 

而后问题就来了: 1)咱们如何肯定一个肯定的文本文件使用的是什么字符编码? 2)咱们如何把文件转换成已选择的字符编码?spa

步骤一

 

为了肯定文件的字符编码,咱们使用一个名为 “file” 的命令行工具。由于 file 命令是一个标准的 UNIX 程序,因此咱们能够在全部现代的 Linux 发行版中找到它。命令行

 

运行下面的命令:code

 

$ file --mime-encoding filename 

 

 

 

步骤二

下一步是查看你的 Linux 系统所支持的文件编码种类。为此,咱们使用名为 iconv 的工具及 “-l” 选项(L 的小写)来列出全部当前支持的编码。orm

 

$ iconv -l 

iconv 工具是 GNU libc 库组成部分,所以它在全部 Linux 发行版中都是开箱即用的。blog

 

步骤三

在咱们在咱们的 Linux 系统所支持的编码里面选定了目标编码以后,运行下面的命令来完成编码转换:utf-8

$ iconv -f old_encoding -t new_encoding filename

例如,把 iso-8859-1 编码转换为 utf-8 编码:ci

$ iconv -f iso-8859-1 -t utf-8 input.txt 

相关文章
相关标签/搜索