带圆圈的数字 (U+2460 .. U+2468) 的 unicode 范围无法与任何日语编码(EUC-JP、Shift-JIS、ISO-2022-JP)相互转换,即使它们存在在那里,我经常会碰到它们。
% echo ①②③③④⑤⑥⑦⑧⑨ | iconv -f utf-8 -t euc-jp
iconv: (stdin):1:0: cannot convert
% echo ①②③③④⑤⑥⑦⑧⑨ | iconv -f utf-8 -t shift-jis
iconv: (stdin):1:0: cannot convert
% echo ①②③③④⑤⑥⑦⑧⑨ | iconv -f utf-8 -t iso-2022-jp
iconv: (stdin):1:0: cannot convert
% printf "\xad\xa1\xad\xa2\xad\xa3\xad\xa3 \xad\xa4\xad\xa5\xad\xa6\xad\xa7\xad\xa8\xad\xa9" | iconv -f euc-jp -t utf-8
iconv: (stdin):1:0: cannot convert
% printf "\x87\x40\x87\x41\x87\x42\x87\x42 \x87\x43\x87\x44\x87\x45\x87\x46\x87\x47\x87\x48" | iconv -f shift-jis -t utf-8
iconv: (stdin):1:0: cannot convert
是什么赋予了?
答案1
这些字符实际上并不存在于这三种编码中。您实际上想要EUC-JIS-2004
akaEUC-JISX0213
而不是普通的 EUC-JP,SHIFT_JIS-2004
或者CP932
代替 SHIFT_JIS,而ISO-2022-JP-2004
不是普通的 ISO-2022-JP。
% printf "\xad\xa1\xad\xa2\xad\xa3 \xad\xa4\xad\xa5\xad\xa6\xad\xa7\xad\xa8\xad\xa9" | iconv -f euc-jisx0213 -t utf-8
①②③ ④⑤⑥⑦⑧⑨