前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术|Linux 有问必答:在 Linux 如何更改文本文件的字符编码

技术|Linux 有问必答:在 Linux 如何更改文本文件的字符编码

原创
作者头像
用户8710643
修改2021-07-12 10:33:09
3K0
修改2021-07-12 10:33:09
举报
文章被收录于专栏:linux百科小宇宙

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

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

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

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

步骤一为了确定文件的字符编码,我们使用一个名为“file”的命令行工具。因为file命令是一个标准的UNIX程序,所以我们可以在所有现代的Linux发行版中找到它。

运行下面的命令:

$file--mime-encodingfilename

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

$iconv-liconv工具是GNUlibc库组成部分,因此它在所有Linux发行版中都是开箱即用的。

步骤三在我们在我们的Linux系统所支持的编码里面选定了目标编码之后,运行下面的命令来完成编码转换:

$iconv-fold_encoding-tnew_encodingfilename例如,把iso-8859-1编码转换为utf-8编码:

$iconv-fiso-8859-1-tutf-8input.txt

了解了我们演示的如何使用这些工具之后,你可以像下面这样修复一个受损的字幕文件:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档