从 ISO-IR-87 转换为 UTF-8 编码

mal*_*lat 5 debian character-encoding

我正在研究 Debian 及其衍生系统。我想将原始输入 ISO-IR-87 转换为 UTF-8。有简单的方法吗?

\n

以供参考:

\n
% iconv -l | grep "IR-8"\nISO-IR-8-1//\nISO-IR-84//\nISO-IR-85//\nISO-IR-86//\nISO-IR-88//\nISO-IR-89//\n\n% dpkg -S /usr/bin/iconv\nlibc-bin: /usr/bin/iconv\n\n% apt-cache policy libc-bin\nlibc-bin:\n  Installed: 2.36-9+deb12u3\n  Candidate: 2.36-9+deb12u3\n  Version table:\n *** 2.36-9+deb12u3 500\n        500 http://security.debian.org/debian-security bookworm-security/main amd64 Packages\n        100 /var/lib/dpkg/status\n     2.36-9+deb12u2 500\n        500 http://deb.debian.org/debian bookworm/main amd64 Packages\n
Run Code Online (Sandbox Code Playgroud)\n
\n

重新编码似乎可以在我的系统上运行(感谢@frostschutz):

\n
% echo -n '\xef\xbc\xa1\xef\xbc\xa2\xef\xbc\xa3' > t.txt\n% recode -v UTF-8..JIS_X0208 t.txt\nRequest: UTF-8..:libiconv:..JIS_X0208\nShrunk to: UTF-8..JIS_X0208\nRecoding t.txt... done\n% recode -v JIS_X0208..UTF-8 t.txt\nRequest: JIS_X0208..:libiconv:..UTF-8\nShrunk to: JIS_X0208..UTF-8\nRecoding t.txt... done\n
Run Code Online (Sandbox Code Playgroud)\n

Sté*_*las 7

GNUrecode似乎支持它:

$ 重新编码-l | grep -i ISO-IR-87
JIS_X0208 csISO87JISX0208 ISO-IR-87 JIS0208 JISX0208.1983-0 JISX0208.1990-0 JIS_X0208-1983 JIS_X0208-1990 X0208

所以:

recode ISO-IR-87..UTF-8
Run Code Online (Sandbox Code Playgroud)

看起来它还有许多其他名称(更多信息请参见https://en.wikipedia.org/wiki/JIS_X_0208iconv ),但GNU libc似乎都不支持它们。该维基百科文章表明,日语字符集未正确指定,实现之间存在不兼容性,并且当前未使用,这可以解释为什么它没有包含在 GNU libc 中(即使它已包含在 GNU 的独立 iconv 库中,如 @ 所示)霜舒兹)。