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

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

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

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

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

步骤一

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

运行下面的命令:

$ file --mime-encoding filename 

image.png

也可以使用 file 命令,并添加 -i 或 --mime 参数来查看一个文件的字符编码

file -i a.txt

步骤二

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

$ iconv -l 

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

步骤三

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

$ iconv -f old_encoding -t new_encoding filename

iconv -f 原本的编码格式 -t 要转换成的编码 文件名 -o 新文件名

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

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

image.png

参考:https://www.cnblogs.com/llwang/p/4099695.html
https://zhidao.baidu.com/question/757242727436827284.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在 Linux 中,可以使用 `locale` 命令来查看和设置系统的区域和语言环境。 要让终端使用指定的字符编码输出,可以设置环境变量 `LC_ALL` 或 `LANG`。例如,如果要让终端使用 UTF-8 编码输出,可以在终端中运行以下命令: ```bash export LC_ALL=zh_CN.UTF-8 ``` 或 ```bash export LANG=zh_CN.UTF-8 ``` 这样,终端就会使用 UTF-8 编码输出。 注意,如果要永久设置字符编码,可以将上述命令添加到用户的 `~/.bashrc` 文件中,这样每次登录时都会自动生效。 有关 `locale` 命令的更多信息,可以使用 `man locale` 命令查看。 ### 回答2: 要让Linux终端指定字符编码输出,可以通过以下步骤进行设置: 1. 首先,需要确认终端所使用的字符编码。可以通过在终端中输入以下命令来进行确认: ```bash echo $LANG ``` 该命令会显示当前终端所使用的语言和字符编码。 2. 如果需要更改终端字符编码,可以通过修改环境变量来实现。使用vi或者其他文本编辑器打开用户主目录下的.bashrc文件(如果使用的是bash终端)或者其他对应的配置文件。 ```bash vi ~/.bashrc ``` 3. 在文件中添加以下行: ```bash export LANG=<字符编码> ``` 将"<字符编码>"替换为你想要使用的字符编码,比如UTF-8、GB2312等。 4. 保存并关闭文件。 5. 然后,运行以下命令,使修改生效: ```bash source ~/.bashrc ``` 或者重新启动终端。 6. 修改完成后,终端将会使用指定的字符编码进行输出。 ### 回答3: 在Linux下,可以使用命令行工具来指定终端的字符编码输出。具体步骤如下: 1. 打开终端,进入命令行界面。 2. 使用命令`locale -a`查看系统支持的所有字符编码。例如,UTF-8是一种常用的字符编码。 3. 使用命令`export LANG=<字符编码>`来设置终端的字符编码。例如,`export LANG=en_US.UTF-8`表示将终端的字符编码设置为UTF-8。 4. 使用命令`locale`来验证终端的字符编码是否已经设置成功。该命令会显示当前终端的各种本地化设置,包括字符编码。 5. 在终端中执行其他命令或程序时,可以使用适当的参数来指定输出的字符编码。例如,如果要将一个文本文件UTF-8编码显示在终端上,可以使用`cat file.txt --encoding=UTF-8`命令。 注意:以上步骤仅在当前终端会话中有效,如果希望永久设置终端的字符编码,可以将`export LANG=<字符编码>`命令添加到shell的配置文件(如`~/.bashrc`或`~/.zshrc`)中。这样,每次打开终端时,就会自动设置相应的字符编码。 总之,通过使用适当的命令和参数,可以在Linux下轻松地将终端的字符编码设置为指定的值,并且输出文本时,可以选择相应的字符编码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周小董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值