Linux nkf命令 转换文字编码与换行符

本文介绍了如何使用Linux工具nkf处理CSV文件中的乱码问题,通过nkf--guess检测文件编码,然后使用nkf-w8UTF-8转换并覆盖源文件,确保在不同编码环境下正确显示。
摘要由CSDN通过智能技术生成

参考资料

  1. 【 nkf 】コマンド――文字コードと改行コードを変換する
  2. nkfコマンドでファイルの文字コードと改行コードを統一する


一. 前期准备

⏹有如下文件,business-content-1.csv

業務,時間,会社,コスト
販売,2025,JMW会社,1000円
中古,2024,清掃会社,2000円
看病,2023,病院小林,1566円
ゴミ回収,2025,長野県回収,7853円
テレビ改装,2589,東京都テレビ,4454152円

⏹由下图可见

  • 该csv文件的编码为:Shift-JIS
  • 换行符为:LF

在这里插入图片描述


二. 乱码现象与分析

😵我们直接使用cat命令打开文件的话,可以看到终端窗口出现了乱码。

在这里插入图片描述
🤔我们使用的是Tera Term连接工具,默认编码为UTF-8格式,而csv文本为Shift-JIS格式,所以出现了乱码。

🤪若我们将终端的显示编码改为Shift-JIS格式之后,再次cat,可以看到文件显示正常。

在这里插入图片描述

在这里插入图片描述

😒若不允许修改终端显示code?使用nkf命令即可解决此问题。


三. nkf命令

nkf(Network Kanji Filter)命令,是Linux和其他类Unix操作系统中的一个命令行工具,用于进行字符编码转换。它主要用于在不同字符编码之间转换文本,以及进行换行符的转换。

⏹输出配置项

短配置项長配置项意味
-j--jisJISコードを出力する(デフォルト)
-e--eucEUCコードを出力する
-s--sjisシフトJISコードを出力する
-w,-w80UTF-8コードを出力する(BOMなし)
-w8UTF-8コードを出力する(BOM有り)
-w16,-w16B0UTF-16コードを出力する(ビッグエンディアン/BOMなし)
-w16BUTF-16コードを出力する(ビッグエンディアン/BOM有り)
-w16LUTF-16コードを出力する(リトルエンディアン/BOM有り)
-w16L0UTF-16コードを出力する(リトルエンディアン/BOMなし)
-IISO-2022-JP以外の漢字コードを「(げた記号)」に変換する
--oc 文字コード出力する文字コードを「EUC-JP」や「UTF-8」などで指定する
--overwriteファイルを変換して上書きする

⏹换行符配置项

短配置项長配置项意味
-d,-Lu改行をLFにする(UNIX系)
-c,-Lw改行をCRLFにする(Windows系)
-Lm改行をCRにする(OS Xより前のmac OS系)

3.1 nkf --guess 查看文件编码

nkf --guess ./business-content-1.csv
# Shift_JIS (LF)

3.2 nkf -w8 UTF-8(BOM)编码显示

  • 显示前3行
  • 使用utf-8编码显示
cat ./business-content-1.csv | head -3 | nkf -w8
head -3 ./business-content-1.csv | nkf -w8
業務,時間,会社,コスト
販売,2025,JMW会社,1000円
中古,2024,清掃会社,2000円

3.3 nkf -wd --overwrite 覆盖源文件

  • w:使用UTF-8(无BOM)模式编码
  • w8:使用UTF-8(有BOM)模式编码
  • d:将换行符改为 LF

在这里插入图片描述

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值