上一篇我们提到了OS和DB的一些中文乱码问题解决,本篇我们继续介绍下在OS上的文本文件中文乱码问题。

操作系统是Linux(OEL 8.10),所有文件是打了一个压缩包上传的,上传解压后发现其中的文本文件中文乱码。类似现象如下:

[oracle@dbtest AIDIR]$ cat yy.txt
ʵa) (b)֪
Ʒ
b)a)ʵ0;

这通常是文本文件的字符编码导致。

举个例子。

现在有两个文件:

  • xx.txt是我自己vi编辑新建的
  • yy.txt这里代表的是同事发我的一些测试文件
# 两个测试文本文件 xx.txt, yy.txt
[oracle@dbtest AIDIR]$ ls -l xx.txt
-rw-r--r-- 1 oracle oinstall 38 Mar 20 01:50 xx.txt
[oracle@dbtest AIDIR]$ ls -l yy.txt
-rw-r--r-- 1 oracle oinstall 291 Mar 20 01:50 yy.txt
# 使用file -i 文件名 查看其字符编码
[oracle@dbtest AIDIR]$ file -i xx.txt
xx.txt: text/plain; charset=utf-8
[oracle@dbtest AIDIR]$ file -i yy.txt
yy.txt: text/plain; charset=iso-8859-1

看到两个文件是charset=utf-8charset=iso-8859-1,但同事已经提前告诉我相关测试文件是GBK编码的,所以我不需要过多考虑。

至于为什么显示iso-8859-1,是因为 file 命令有时可能会错误识别 GBK 为 ISO-8859-1。

所以这里真实情况是,分别是UTF-8和GBK。

下面需要的就是如何转换编码,需要用到iconv这个命令:

iconv 是一个用于 字符编码转换 的命令,在 Unix/Linux 系统中常见,主要用于不同字符集(如 GBK、UTF-8、ISO-8859-1 等)之间的转换。

使用iconv 命令尝试转换yy.txt到yy1.txt:

iconv -f GBK -t UTF-8 yy.txt > yy1.txt

若文件中的中文字符显示正常,说明我们的推断正确。

但涉及的文件其实很多,那么我们需要批量处理下:

方案1:基于现有文件名,按规则生成新文件

保留现有文件,安全可控,新的文件是依据现有文件名,额外添加了_utf8标识。

for file in *.txt; do
iconv -f GBK -t UTF-8 "$file" -o "${file%.txt}_utf8.txt"
done

方案2:直接覆盖现有文件

文件名不变,适用于需要保持原文件路径的场景。

因为我的源文件是有备份的,所以可以采纳这种方法。

for file in *.txt; do
iconv -f GBK -t UTF-8 "$file" -o tmpfile && mv tmpfile "$file"
done

解决Linux下文本文件中文乱码问题的更多相关文章

  1. 解决Linux下Oracle中文乱码的一些心得体会 ,转自

    以下转自 http://blog.itpub.net/29151695/viewspace-1173238/ 最近在linux上安装完oracle 10gR2后,又遇到了字符集乱码的问题,之前在网上找 ...

  2. 解决Linux下sqlplus中文乱码问题

    错误现象:在windows下用其他工具访问oracle,确认中文正常显示.在Linux下使用sqlplus查询数据表中文内容出现乱码. 分析及解决:因为windows下正常,所以问题应出现在Linux ...

  3. 解决windows下vim中文乱码

    解决windows下vim中文乱码 windows安装了vim8,也就是gvim后,打开带有中文的文档,显示中文是乱码. 毕竟有许多文档我是用utf-8编码的,所以解决的办法是设置一下编码为utf-8 ...

  4. 解决linux下unzip中文有乱码的问题

    xxx.zip 中有中文的文件,在linux下unzip就会有乱码. 解决办法:安装7zip 去http://sourceforge.net/projects/p7zip/files/latest/d ...

  5. .net core在linux下图片中文乱码

    不得不吐槽一下,.net core 2.2的System.Drawing在linux有很多坑,又是依赖libgdiplus,又是依赖gdiplus,依赖解决了又来了个中文乱码,怎的一声哀叹 这里做个笔 ...

  6. 解决linux下导入数据库乱码问题

    引言:在windows下的mysql数据库导出SQL文件,在Linux下导入后显示为乱码. 1.启动Mysql服务及创建数据库(下面uushop为我将创建的数据库名) service mysqld s ...

  7. 解决Ubuntu下gedit中文乱码的情况

    windows下简体中文多用GBK编码 (或GB2312, GB18030), 而linux下多用UTF-8编码. 因此,一般来说在微软平台编辑的中文txt不能在ubuntu下直接打开查看,除非在保存 ...

  8. linux下python中文乱码解决方案

    1. 场景描述 linux服务器下安装了Anaconda3,执行Pyhton的K-means算法,结果出现如下图的中文字符乱码.上次已经解决了,忘记记录解决流程了,这次配置了一台新的服务器,又出现,默 ...

  9. 解决mac下sublime中文乱码

    Mac OS X 属于 Apple 独家演绎的 Unix 分支版本,默认使用 UTF-8 编码,当使用不同开发平台的小伙伴们,共同维护一份代码的时候,尤其现在很多人都还在用 Windows 系统的时候 ...

  10. linux下mysql中文乱码

    登录mysql执行mysql> show variables like 'character%';发现编码有些不是utf-8 修改/etc/mysql/my.cnf,网上说的是/etc/my.c ...

随机推荐

  1. 按部就班--从零开始建设k8s监控(二)

    前言 书接上文,prometheus已经安装好了,并且能够对k8s的整体状态进行监控,但是我们还需要更多 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS docker 24.0. ...

  2. Solution Set - “我献上明月一盏,照满河山”

    目录 0.「集训队互测 2018」「洛谷 P9248」完美的集合 1.「UR #6」「UOJ #74」破解密码 2.「NOI Simu.」苯为 3.「NOI Simu.」西克 4.「NOI Simu. ...

  3. HashMap中哈希表的长度为什么需要是2的幂次方以及怎么实现

    看过HashMap源码的人可能都用印象,就是hashMap的哈希表长度可以由自己指定也可以不指定使用默认长度,但是如果在了解或者发现tableSizeFor方法的话,你就会知道此方法会改变我们的输入长 ...

  4. IT系统架构的演化-copy

    前言 一个成熟的大型网站(如淘宝.天猫.腾讯等)的系统架构并不是一开始设计时就具备完整的高性能.高可用.高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式.技术 ...

  5. docker没有vi不能执行yum报Device or resource busy

    最近在使用docker的过程中发现一个问题,就是想用vim编辑器编辑一个文件,发现连vi都没有. 于是想到一个办法用docker cp来解决问题: 首先执行docker ps -a查看容器的id 然后 ...

  6. JVM:方法区、堆

    https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.6.2

  7. 060_面向过程和面向对象区别 061_对象是什么_对象和数据管理 062_对象和类的关系_属性_成员变量_方法 063_一个典型类的写法和调用_类的UML图入门 064_内存分析详解_栈_堆_方法区_栈帧_程序执行的内存变化过程

    060_面向过程和面向对象区别 061_对象是什么_对象和数据管理 062_对象和类的关系_属性_成员变量_方法 public class SxtStu {//定义了一个类,包含的成员变量,属性,方法 ...

  8. EndNote20在正文中修改引文格式的方法(只显示第一作者,其他部分显示et.al.)

    目前网上查找出来的绝大部分信息都是基于EndNote X9,所以这是自己摸索出来的方法 [这篇文章在CSDN上也发了一次,地址:https://blog.csdn.net/2301_79112268/ ...

  9. Windows11本地部署DeepSeek加速

    技术背景 在上一篇文章中我们介绍了在Ubuntu Linux操作系统上部署了一个DeepSeek-R1:14B,再通过其他电脑远程调用模型进行生成的方法.这里我们介绍一下Windows11安装Olla ...

  10. 定制Allure报告

    定制Allure报告 自定义Logo图标 效果图 实现步骤 定位资源文件夹:首先,您需要定位到 allure/plugins/custom-logo-plugin/static 文件夹.这个文件夹通常 ...