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

参考资料

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

目录

  • 一. 前期准备
  • 二. 乱码现象与分析
  • 三. nkf命令
    • 3.1 nkf --guess 查看文件编码
    • 3.2 nkf -w8 UTF-8(BOM)编码显示
    • 3.3 nkf -wd --overwrite 覆盖源文件


一. 前期准备

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

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

⏹由下图可见

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

Linux nkf命令 转换文字编码与换行符_第1张图片


二. 乱码现象与分析

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

Linux nkf命令 转换文字编码与换行符_第2张图片
我们使用的是Tera Term连接工具,默认编码为UTF-8格式,而csv文本为Shift-JIS格式,所以出现了乱码。

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

Linux nkf命令 转换文字编码与换行符_第3张图片

Linux nkf命令 转换文字编码与换行符_第4张图片

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


三. nkf命令

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

⏹输出配置项

短配置项 長配置项 意味
-j --jis JISコードを出力する(デフォルト)
-e --euc EUCコードを出力する
-s --sjis シフトJISコードを出力する
-w,-w80 UTF-8コードを出力する(BOMなし)
-w8 UTF-8コードを出力する(BOM有り)
-w16,-w16B0 UTF-16コードを出力する(ビッグエンディアン/BOMなし)
-w16B UTF-16コードを出力する(ビッグエンディアン/BOM有り)
-w16L UTF-16コードを出力する(リトルエンディアン/BOM有り)
-w16L0 UTF-16コードを出力する(リトルエンディアン/BOMなし)
-I ISO-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

Linux nkf命令 转换文字编码与换行符_第5张图片

你可能感兴趣的:(Linux,linux,运维)