在Linux系统中修改文本的字符编码的方法
2015-06-17 18:00
531 查看
正如我们所知道的那样,电脑只能够处理低级的二进制值,并不能直接处理字符。当一个文本文件被存储时,文件中的每一个字符都被映射成二进制值,实际存储在硬盘中的正是这些“二进制值”。之后当程序打开文本文件时,所有二进制值都被读入并映射回原始的可读字符。只有当所有需要访问这个文件的程序都能够“理解”它的编码,即二进制值到字符的映射时,这个“保存和打开”的过程才能很好地完成,这也确保了可理解数据的往返过程。
如果不同的程序使用不同的编码来处理同一个文件,源文件中的特殊字符就无法正常显示。这里的特殊字符指的是非英文字母的字符,例如带重音的字符(比如 ?,á,ü)。
然后问题就来了: 1)我们如何确定一个确定的文本文件使用的是什么字符编码? 2)我们如何把文件转换成已选择的字符编码?
步骤一
为了确定文件的字符编码,我们使用一个名为 “file” 的命令行工具。因为 file 命令是一个标准的 UNIX 程序,所以我们可以在所有现代的 Linux 发行版中找到它。
运行下面的命令:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/f31a689aa93c8f386c284660d6c08636)
步骤二
下一步是查看你的 Linux 系统所支持的文件编码种类。为此,我们使用名为 iconv 的工具及 “-l” 选项(L 的小写)来列出所有当前支持的编码。
iconv 工具是 GNU libc 库组成部分,因此它在所有 Linux 发行版中都是开箱即用的。
步骤三
在我们在我们的 Linux 系统所支持的编码里面选定了目标编码之后,运行下面的命令来完成编码转换:
例如,把 iso-8859-1 编码转换为 utf-8 编码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201506/a541d4b7df7fd3495e665a4b394c03c4)
了解了我们演示的如何使用这些工具之后,你可以像下面这样修复一个受损的字幕文件:
如果不同的程序使用不同的编码来处理同一个文件,源文件中的特殊字符就无法正常显示。这里的特殊字符指的是非英文字母的字符,例如带重音的字符(比如 ?,á,ü)。
然后问题就来了: 1)我们如何确定一个确定的文本文件使用的是什么字符编码? 2)我们如何把文件转换成已选择的字符编码?
步骤一
为了确定文件的字符编码,我们使用一个名为 “file” 的命令行工具。因为 file 命令是一个标准的 UNIX 程序,所以我们可以在所有现代的 Linux 发行版中找到它。
运行下面的命令:
$ file --mime-encoding filename
步骤二
下一步是查看你的 Linux 系统所支持的文件编码种类。为此,我们使用名为 iconv 的工具及 “-l” 选项(L 的小写)来列出所有当前支持的编码。
$ iconv -l
iconv 工具是 GNU libc 库组成部分,因此它在所有 Linux 发行版中都是开箱即用的。
步骤三
在我们在我们的 Linux 系统所支持的编码里面选定了目标编码之后,运行下面的命令来完成编码转换:
$ iconv -f old_encoding -t new_encoding filename
例如,把 iso-8859-1 编码转换为 utf-8 编码:
$ iconv -f iso-8859-1 -t utf-8 input.txt
了解了我们演示的如何使用这些工具之后,你可以像下面这样修复一个受损的字幕文件:
相关文章推荐
- Linux_3.2_动态函数库设计
- Linux下mysql备份 恢复
- U盘在物理机安装linux系统
- CentOS下配置VNCServer,重启服务仍然生效
- linux 内核驱动加载过程中 向文件系统中的文件进行读写操作
- 【归纳总结】Unix/linux下的进程管理(二):创建进程的函数及其应用、对比
- Linux下获取MAC地址(C语言版)
- Centos 7 安装lnmp 移动数据库文件目录,重启后无法访问Web服务,笔记
- [图文]centos6.3搭建FTP服务器教程
- 深入理解linux内核读书笔记 (第四章)
- Linux --windows vs
- Linux启动流程
- linux搭建samba服务器
- linux之curses库
- Linux命令-防火墙命令:iptables
- linux ip命令收藏
- Linux NFS共享远程目录 (mount)
- VCenter下更改linux主机的网卡ip地址
- Linux内核启动过程
- Linux 下配置多机实时同步