专栏首页linux百科小宇宙技术|Linux 有问必答:在 Linux 如何更改文本文件的字符编码
原创

技术|Linux 有问必答:在 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

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [995]Linux如何让更改文件的字符编码

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

    周小董
  • 嵌入式驱动工程师学习路线【建议收藏】

    网上看了很多的嵌入式学习路线,有的比较片面,有的为了博人眼球东拼西凑,几乎把整个行业用得着用不着的技术都写上去了,没有侧重点,简直是劝退指南,还有的纯粹是打广告...

    Jasonangel
  • Linux面试题Top100

    回答: Linux是基于Linux内核的操作系统。它是一个开源操作系统,可以在不同的硬件平台上运行。它为用户提供了免费的低成本操作系统。这是一个用户友好的环境,...

    陈哈哈
  • 转载:程序员都应该访问的最佳网站

    Zoctopus
  • 收藏的技术文章链接(ubuntu,python,android等)

    开发过程中收藏在Chrome书签栏里的技术文章,与自己的文章分开。 主要涉及python,android,ubuntu等内容,我自己常常在这里面找回忘了的知识...

    梦里茶
  • 学习C语言编程,推荐你看这6本书

    这本书总共包含21章也适合入门,是一本不可多得的编程必备书籍。知识点更详细,但内容上对初学者来说没上一本通俗易懂(个人觉得)

    C语言中文社区
  • 长文 | 最近面试 Java 后端开发的感受

    前段时间,密集面试了若干位Java后端候选人,工作经验在3到5年间。我的标准其实不复杂(适用90%小小小公司,BAT等自动忽略):

    芋道源码
  • 如何成为一名合格的 Linux C/C++ 后台开发者?

    我从学生时代到进入软件开发这个行业,不知不觉已经十余年了。这些年,先后在网游公司做过游戏服务器,为上海某交易所做过金融交易系统、在金融证券公司做过股票证券交易系...

    范蠡
  • 回顾Linux、Git 之父Linus Torvalds的传奇技术人生

    1写在前面 提起 Linus Torvalds 大家的第一反应是怎样的?是严苛刻薄,还是神级伟大,亦或是孤傲清高?二十五年来,Linus Torvalds 一直...

    企鹅号小编
  • Shell大全:可以应用于工作及面试

    1.Shell该如何学习? 2.Shell和传统编程语言有哪些相同? 3.Shell和传统编程语言有哪些不同? 4.你认为Shell还有哪些便捷的地方?

    用户1410343
  • 最近面试 Java 后端开发的感受!

    前段时间,密集面试了若干位Java后端候选人,工作经验在3到5年间。我的标准其实不复杂(适用90%小小小公司,BAT等自动忽略):

    田维常
  • 给初学Linux的朋友分享一些心得总结

    很多同学接触linux不多,对linux平台的开发更是一无所知。 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机it行业从业人员,=""

    用户6754675
  • 百度,美团,鼎信,涂鸦面经

    8.12 百度运维部共三面(offer) 1.自我介绍 2.聊项目 3.epoll和select的区别,epoll两种触发方式,踩过那些坑 4.讲讲re...

    牛客网
  • 服务器为什么用 Linux?

    前段时间开发游戏服务器模拟玩家行为的压力测试工具,网络框架用netty, 运行的机器是4核8G的云服务器,win server 2012 和 centos7都有...

    知忆
  • 初识Linux渗透:从枚举到内核利用

    许多人都认为Linux是最安全的操作系统,因此在对Linux的安全问题上也放松了警惕。那么事实真的如此吗?其实安全从来都只是相对的,Linux也不例外。虽然它加...

    FB客服
  • Linux新手渗透指南:从枚举到内核利用

    许多人都认为Linux是最安全的操作系统,因此在对Linux的安全问题上也放松了警惕。那么事实真的如此吗?其实安全从来都只是相对的,Linux也不例外。虽然它加...

    C4rpeDime
  • 测试岗/测试开发岗面经合集

    主要考察项目相关以及编程能力。相关知识能说多少说多少,面试官不会打断你,主要看技术深度 。 编程题手写有困难的情况下,必须介绍分析思路、准备用什么方法

    测试之道
  • 程序猿必须知道的一些有用的(外国)网站

    原文:https://github.com/sdmg15/Best-websites-a-programmer-should-visit

    华章科技
  • Java面试——Linux

    一、如果知道一个文件名称,怎么查这个文件在 Linux下的哪个目录,如:要查找 tnsnames.ora文件

    Java架构师必看

扫码关注云+社区

领取腾讯云代金券