PokuG stdio.h

ポクジィと読みます

Windows98のTera TermからRaspberry Piに接続して日本語が文字化けした話


Windows98マシンでTera Term2.3を使い、Raspberry Piにtelnet接続したところ、日本語が文字化けして読めません!
UTF-8全盛の現在、レトロPCで表示させるにはどうすれば?

本記事では、実際に文字化けを解消した手順を解説します。

はじめに

PC-9821のWindows98のTera Term2.3からRaspberry PiにTelnetで接続しています。
Telnetで接続する目的は主にシャットダウンなんで文字化けしてても運用には問題ないのですがとにかく気になります。
そういうわけでUTF-8全盛のいまWindows98で文字化けを解消したいと思います。


環境

以下環境で確認しました。

Raspberry Pi Raspberry Pi4
Raspberry Pi OS Debian GNU/Linux 12 (bookworm)
PC PC-9821Ra43
OS Windows98 Second Edition
ターミナルソフト Tera Term2.3

写真にある上に乗っかっているのがtelnetサーバーのRaspberry Piで下の大きいのがクライアントのPC-98です。
サーバー機器が驚きの小ささです!技術の進化ってスゴイデスネ!


問題の症状

以下のような感じになってます。

telnet接続はできるが、日本語がすべて化ける


こんな感じで化けています。

Tera Term側のの文字コードをいろいろ変えても改善しない

ただ単にTera Term側のの文字コードをいじっても改善しません。


原因

原因はTera Term2.3(Windows98側)がUTF-8に非対応なのに、Raspberry PiがUTF-8で日本語を出力していたためで、Raspberry Pi側をEUC-JPの日本語ロケールを追加し、に切り替えることで文字化けが解消できそうです。

ちなみにUTF-8対応のTera TermはWindows95/98は未対応っぽいです。

本当はja_JP.SJISにしたかったが...

Raspberry Pi側にEUC-JPでなくて、ja_JP.SJISを追加したかったのですが、手順がいまいちわからなくて断念しました。


手順

現在の使用可能なロケールの確認

"locale -a"コマンドで確認できるので確認してみます。

locale -a


結果は4つでEUC-JPはありませんでした...

locale.genファイルの編集

"/etc/locale.gen" で使用できるロケールを追加できるみたいなので、このファイルを編集します。

sudo vi /etc/locale.gen

"ja_JP.EUC-JP EUC-JP"前にある"#"コメントアウト

ファイル中の"ja_JP.EUC-JP EUC-JP"前にある"#"をコメントアウトします。

ロケール生成

"locale-gen"コマンドを使用し、ロケール生成を生成します。

sudo locale-gen


" ja_JP.EUC-JP... done"と表示されれば成功です。

現在の使用可能なロケールの確認

"locale -a"コマンドで再度使用できるロケールを確認してみます。

"ja_JP.eucjp"が増えています
他に増えたのがありますが、何なのかはわかりません...

ja_JP.EUC-JPロケールの設定

ロケールの設定はシステム全体とユーザーごとに設定できます。
今回はシステム全体では何か影響が出ると怖いのでユーザーごとに設定します。

~/.bashrcの編集1

ja_JP.EUC-JPで表示したいユーザーでログインし、"~/.bashrc"を編集します。

 vi .bashrc
~/.bashrcの編集2

以下を追記します。

export LANG=ja_JP.EUC-JP
export LANGUAGE=ja_JP.EUC-JP
export LC_ALL=ja_JP.EUC-JP


ロケールの確認

再ログインして以下コマンドで現在のロケールを確認します。

locale


全部"ja_JP.EUC-JP"になっています。

Tera Termの設定

文字コードを ja_JP.EUC-JPに設定

「Setup」→「Terminal」を選択し文字コードを設定

日本語が使用できるフォントに設定

「Setup」→「Font」を選択し、日本語が使用できるフォントに設定

確認

下の赤枠は日本語が表示できました。

今回はユーザー単位でja_JP.EUC-JPロケールに設定するため~/.bashrcを編集しました。
上の青枠はユーザーとパスワードを入力するログインの画面なので、まだ~/.bashrcが実行されていないUTF-8が表示された状態のためと考えられます。

ログイン前からja_JP.EUC-JPロケールに設定するには、システム全体をja_JP.EUC-JPに設定する必要があると思います。


終わり

Windows98のTera TermからRaspberry Piに接続して日本語が文字化けした話でした。
まとめとしては、

  • UTF-8 が当たり前の現代でも、古いターミナルソフトを使うときは文字コードの互換性に注意が必要
  • 今回は ja_JP.EUC-JP を正しく生成・設定することで、無事日本語(一部)表示が可能になりました

おまけ ja_JP.EUC-JPをシステム全体に適用する方法

"/etc/default/locale"に以下を設定すればうまくいくと思われます。(管理人未実行)

LANG=ja_JP.EUC-JP
LANGUAGE=ja_JP.EUC-JP
LC_ALL=ja_JP.EUC-JP