从Windows操作系统切换到Ubuntu的朋友会发现,Ubuntu中文显示经常会出现乱码的情况。乱码出现的情况有很多,常见的原因包括系统locale设置错误,系统中文字体缺失等。今天我想介绍的一种乱码情况,乱码原因并不是太常见。
有些从Windows移植到Ubuntu的软件,其输出还保留了Windows下的编码方式,比如GBK 编码,而 Ubuntu 22.04 默认使用 UTF-8 编码,导致解码失败,命令行输出为乱码。具体来说,我今天在Ubuntu 22.04 上使用datacollectforlinux-v1.2.6 这个特定的看穿式监管采集工具时出现了乱码的问题。
针对这种情况,可以使用iconv命令来解决,具体命令如下:
./datacollectforlinux-v1.2.6 2>&1 | iconv -f GBK -t UTF-8
- 解释:datacollectforlinux-v1.2.6是输出有问题的软件,
2>&1是将错误输出也重定向到标准输出,iconv -f GBK -t UTF-8表示假设输入是 GBK 编码,将其转换为 UTF-8 显示。
- 注意:如果提示
iconv命令不存在,请先运行sudo apt install iconv。
如果上面的命令无效,尝试假设它是 GB18030 编码(GBK 的超集),或其他你认为可能的编码:
./datacollectforlinux-v1.2.6 2>&1 | iconv -f GB18030 -t UTF-8