如何更改 WSL 控制台的代码页?

如何更改 WSL 控制台的代码页?

我读了使用“新 Windows 终端”通过 ssh 访问非 UTF 代码页服务器时出现的问题其中答案建议使用 LUIT 或 Screen。但我想知道 WSL 控制台是否有与 SSH 不同的答案

我在 Windows 10 上的 WSL 下使用 Oracle Linux 8.5。

我有一个旧版 Linux 应用程序,它发出以 CP437 编码的文本。它无法配置为发出 UTF-8。

这显然无法正确显示,因为 WSL 控制台显然设置为 UTF-8(代码页 65001)

WSL 控制台窗口属性显示代码页 65001

这里的“当前代码页”值是 65001,但没有明显的方法可以临时或永久设置它。


我尝试打开命令提示符并chcp cp437在调用之前使用wsl,但这并没有什么区别

与 chsp 以及 wsl 和测试的会话的屏幕截图

>< 之间是一些 0xbf 字符,我使用 vim 编辑过,可以看到hexdump -C

我不想更改注册表或影响我的整个 Windows 环境。

Oracle Linux 8 源自 Red Hat 8,并且已弃用screen。它的软件包安装程序yum找不到luit,这耗尽了我目前在 Linux 中将 CP437 输出转换为 UTF-8 的想法。

我尝试过 Windows 终端(从桌面搜索栏调用terminal,但这似乎没有给我有关代码页/编码的任何选项。

Windows 终端正在运行测试

注意:绿色边框上的白色是使用 ANSI 命令绘制的,而不是使用我试图使用的 CP437 方框绘制字符绘制的。


能做到吗?

答案1

我还没有找到我的确切问题的答案,但我找到了几个可用的解决方法。

SSHD + PuTTY

最初,我发现的唯一解决方法是启动sshd并使用 Putty。

在 WSL 中的 Oracle 8.5 Linux 上,我运行了。sudo ssh-keygen -A然后sudo /usr/sbin/sshd运行 ​​Putty 终端仿真器,连接到 localhost:22 (SSH 协议),并在“设置”、“窗口”、“翻译”中将 Putty 的翻译设置为 CP437。


洛伊特理工学院

最终我决定更加坚定地使用 LUIT

luit 可能已打包到 Oracle LInux 存储库中的 X11 中,而我不需要全部 X11

我从以下网址下载了 luit 的源代码https://invisible-island.net/luit/,对其进行编译并按如下方式使用它。

sudo yum install gcc
wget https://invisible-island.net/datafiles/release/luit.tar.gz
tar xvzf luit.tar.gz
cd luit*/
./configure
make
sudo make install
man luit
luit -list
cd legacy_app_dir
luit -encoding CP437 legacy_app

在此处输入图片描述

相关内容