首页 > 解决方案 > 为什么 nkf 命令从 UTF8-MAC 转换为 UTF8 时会删除一个字符?

问题描述

我有一个用 UTF8-MAC 编码的文本文件。这包含一行,Åtvidaberg.

"t"当将此文本文件从 UTF8-MAC 转换为 UTF8 时,nkf 命令会删除一个字符。
是什么原因?

$ cat test.txt
Åtvidaberg

(↑ \x41\xCC\x8A\x74\x76\x69\x64\x61\x62\x65\x72\x67)

$ nkf -w --ic=UTF8-MAC test.txt
Åvidaberg

(↑ \xC3\x85\x76\x69\x64\x61\x62\x65\x72\x67,  "t" is missing!)

通常,我假设没有字符被删除。 这个网络转换器或 macOS 的 iconv 命令在转换相同的字符串时不会删除任何字符 Åtvidaberg

$ iconv -f UTF8-MAC -t UTF8 test.txt
Åtvidaberg

(↑ \xC3\x85\x74\x76\x69\x64\x61\x62\x65\x72\x67)

环境

我在 macOS10.14.6 和 Ubuntu18.04 上试过。

nkf 版本如下。它们都是使用brewandapt命令安装的。

In macOS
$ nkf --version
Network Kanji Filter Version 2.1.5 (2018-12-15) 
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
Copyright (C) 1996-2018, The nkf Project.

In ubuntu
$ nkf --version
Network Kanji Filter Version 2.1.4 (2015-12-12) 
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
Copyright (C) 1996-2015, The nkf Project.

标签: macosutf-8iconv

解决方案


推荐阅读