参考资料
- 【 nkf 】コマンド――文字コードと改行コードを変換する
- 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
二. 乱码现象与分析
😵我们直接使用cat
命令打开文件的话,可以看到终端窗口出现了乱码。
🤔我们使用的是Tera Term
连接工具,默认编码为UTF-8格式,而csv文本为Shift-JIS格式,所以出现了乱码。
🤪若我们将终端的显示编码改为Shift-JIS格式之后,再次cat,可以看到文件显示正常。
😒若不允许修改终端显示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