上一篇
你有没有遇到过这种情况?在Linux服务器上打开一个文本文件,结果满屏都是乱码,比如这种莫名其妙的符号,或者从Windows传了个文件到Linux,换行全乱了,脚本直接报错,这些问题往往和文件编码与字符集有关,今天我们就来彻底搞懂它们,并教你如何在Linux下一键查出文件编码,告别乱码困扰!
字符集就像一本字典,规定每个符号对应的数字编号,常见的有:
A
对应数字65) 编码是字符集的存储实现方式。
带BOM
(开头有隐藏标记)或无BOM
格式 UTF-8 with BOM
,而Linux常用UTF-8无BOM
📌 关键区别:字符集是"理论标准",编码是"实际存储方式",我们日常说的"文件编码"通常二者兼指。
直接运行:
file 文件名
示例:
$ file mytext.txt mytext.txt: UTF-8 Unicode text
✅ 优点:系统自带,快速识别文本/二进制
❌ 局限:无法识别无特殊标记的GBK文件
安装:
# Ubuntu/Debian sudo apt install enca # CentOS/RHEL sudo yum install enca
使用:
enca 文件名
示例:
$ enca report.txt Simplified Chinese National Standard; GB2312
✅ 优点:对中文编码识别精准
❌ 注意:新系统可能需要手动配置语言:
enca --language=zh < 文件名
用vim打开文件后,输入命令:
:set fileencoding?
屏幕会显示类似:
fileencoding=utf-8
按ESC
后输入:q
退出即可。
尝试转换编码时会提示原始编码:
iconv -f 原编码 -t utf-8 文件名
如果猜错编码会报错,通过报错信息可反推真实编码。
查看文件头几个字节:
hexdump -C 文件名 | head -n 5
EF BB BF
FE FF
或FF FE
find . -type f -name "*.txt" -exec file {} +
# GBK转UTF-8 iconv -f gbk -t utf-8 input.txt -o output.txt # UTF-8转GBK iconv -f utf-8 -t gbk input.txt -o output.txt
Windows/Linux换行符问题:
CRLF
(\r\n),Linux用LF
(\n) dos2unix
或unix2dos
SSH终端显示乱码:
确保终端和服务器字符集一致:
echo $LANG # 查看当前终端编码 export LANG=zh_CN.UTF-8 # 临时切换为中文UTF-8
脚本文件执行报错:
在脚本第一行指定解释器和编码:
#!/bin/bash # -*- coding: utf-8 -*-
遇到乱码别慌张,记住这个排查流程:
file
或enca
快速检测编码 iconv
转换编码 掌握这些技巧后,无论是查看日志、处理数据还是迁移文件,你都能轻松应对编码问题!
(本文方法验证环境:Ubuntu 22.04/CentOS 7,信息截止2025年8月有效)
本文由 慕运盛 于2025-08-02发表在【云服务器提供商】,文中图片由(慕运盛)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/514464.html
发表评论