我读了使用“新 Windows 终端”通过 ssh 访问非 UTF 代码页服务器时出现的问题其中答案建议使用 LUIT 或 Screen。但我想知道 WSL 控制台是否有与 SSH 不同的答案
我在 Windows 10 上的 WSL 下使用 Oracle Linux 8.5。
我有一个旧版 Linux 应用程序,它发出以 CP437 编码的文本。它无法配置为发出 UTF-8。
这显然无法正确显示,因为 WSL 控制台显然设置为 UTF-8(代码页 65001)
这里的“当前代码页”值是 65001,但没有明显的方法可以临时或永久设置它。
我尝试打开命令提示符并chcp cp437
在调用之前使用wsl
,但这并没有什么区别
>< 之间是一些 0xbf 字符,我使用 vim 编辑过,可以看到hexdump -C
我不想更改注册表或影响我的整个 Windows 环境。
Oracle Linux 8 源自 Red Hat 8,并且已弃用screen
。它的软件包安装程序yum
找不到luit
,这耗尽了我目前在 Linux 中将 CP437 输出转换为 UTF-8 的想法。
我尝试过 Windows 终端(从桌面搜索栏调用terminal
,但这似乎没有给我有关代码页/编码的任何选项。
注意:绿色边框上的白色是使用 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