- 締切済み
Linux,UnixとTera Termの設定について
Linux,UnixとTera Termの設定について AIX5.3とSuSE Linux Enterprise10 SP2をTera Termを使用して TELNETでログインしています AIXをTELNETする時はTera Termの設定をEUCに変更 SuSEを使用するときにはUTF-8に変更し使用しています。 (日本語の部分が文字化けする事で変更して使用しています) Linux,Unixのセットアップ環境によって文字化けを回避する為に EUCやUTF-8に変更しなければ、ならない事は理解できるのですが 根本理由がわかりません、根本理由わかる方教えて頂けますでしょうか? XXXXの設定がXXXXになっている場合はUTF-8で接続しなければ日本語表示が文字化けをおこす XXXXの設定がXXXXになっている場合はEUC 接続しなければ日本語表示が文字化けをおこす 等 具体的な回答宜しくお願いします。 LinuxやUnixのロケールが関係している事は推測できるのですが 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10359)
>rootユーザーでは >echo $LANG >POSIX > >一般ユーザーでは >ja_JP.UTF-8 ↑の場合の具体的な表現という意味ですか?? LANGがCとかPOSIXだと、システムの出力は英文になるので端末の日本語設定がどうであれ文字化けはしません。 LANGがja_JP.UTF-8だと、システムの出力は日本語が用意されていれば日本語で、端末がUTF-8だと文字化けせずに表示されます。日本語が用意されていないコマンドは英文です。 以上はいずれもシステムの出力の話なので、自分で用意したShift_JISのファイルをcatとかで表示すれば、LANGがja_JP.UTF-8であっても、それと無関係にShif_JISで出力されますので、端末のコードをUTF-8からSJISに切り替えないと化けます。 ここでいうシステムの出力とは、標準で用意されているコマンドのエラーメッセージ、警告メッセージ、応答メッセージなどのことです。
- choconamacream
- ベストアンサー率44% (152/338)
>「環境変数LANG」の設定が「ja_JP.UTF-8」になっている場合はUTF-8で接続しなければ日本語表示が文字化けをおこす >「環境変数LANG」の設定が「ja_JP.eucJP」になっている場合はEUC 接続しなければ日本語表示が文字化けをおこす です。 AIXに関しては分かり兼ねる部分があるので、#2さんの内容について追加的なアドバイスです。 現在の環境変数を表示したければ、「env」コマンドを使用します。 ただし、上記のコマンドだと全ての環境変数が表示されるため、実際には以下のようにしたりします。 echo $LANG ちなみに、個別のファイル単位で異なる文字コードが設定されている時などは、「less」コマンドを実行後にCtrl +「g」を押して、現在の文字コードを確認します。 そして、「nkf」コマンドより文字コードの変更ですね。 基本的に古くからあるLinuxでは、「日本語EUCコード(AT&Tコード)」が今も使われていたりしますが、最近のLinuxディストリビューションでは「UTF8コード」が主流となっています。
- saijyo_739
- ベストアンサー率53% (119/222)
『根本理由がわかりません、根本理由わかる方教えて頂けますでしょうか?』 画面に表示するデータはlocaleの設定に従うよう変換されるからです。 画面表示に使う文字コードは 環境変数 LC_CTYPE に従います。これが未設定なら LC_ALL への設定を使います。 ※ 他は日本語環境だけど 表示文字コードのみ英語という場合には LANG=ja_JP.ujis LC_CTYPE=C 等とする事も可能です。 例えば、 a b c のマニュアルが euc sjis utf-8 で用意されていても locale設定を euc としておけばeucコードで出力(画面表示)されます。 つまり eucコードで用意されている a.1 はそのまま、SJISコードで用意されている b.1 は SJISから eucへ変換し出力・ utf-8コードで用意されている c.1 はutf-8からeucに変換し出力される事となります。 ※ 特定の文字コード(例えばSJIS)への対応が不完全でそのため文字が崩れたりする場合には対応不完全なコードを別のコードに変換してやる事で問題を回避できる場合もあります。 Linuxの場合、ディストリビュータの追加している部分だと思いますのでディストリビューションに依って違うのではと思ってます。(昔はUTF-8に対応している・していない等の違いがありました) localeは元々商用Unixベンダが作った団体で規格化されたものなので商用Unixベンダ製品への実装がFreeのBSDやLinuxへの実装より早かったです。 ※ 規格(XPG [ X/Openポータリティ ガイド ] )は和文書籍としても販売されてました。 AIX開発元のIBMもX/Open(現在はThe Open Groupに引き継がれています)の一員として早い時期にAIXへ実装しています。 localeは名前の通り地域情報を扱う仕組みなので管理対象は色々あります。 ※ 同じ英語でも英国と米国で年月日の表示順が違うとか日本語の数字を並べ替えるだとか。 AIX含め主要な商用UnixだとUTF-8含め主要な文字セットは問題なく使えると思います。 LinuxについてはUTF-8は使えるがujis(eucJP)やSJISを切り捨てたりしているディストリビューションや逆にeucJP,SJISで問題がなくUTF-8で問題がでるものがあるかも知れませんので試してみるか個別に確認する必要があるでしょう。
- notnot
- ベストアンサー率47% (4900/10359)
「相手OSで動作するプログラムの言語設定がUTF-8になっている場合はTeratermの設定をUTF-8にしなければ日本語表示が文字化けをおこす」(EUC、SJISについても同じ) です。 Unix/Linuxの場合、環境変数LANGやLC_ALL等にどんな文字列を設定するかによって違います。指定できる値は、Linuxだとおおむねlocale -aで表示されます。AIXは知りません。 sh/bashだと、.profile や .bash_profileなどで、 LANG=ja_JP.euc-jp ; export LANG 等と書いて設定します。locale -a で表示されないものを書いても駄目です。 Unix/Linuxのロケールに対応したプログラムは、LANG等の値を見て、プログラム内部で文字コード変換してメッセージを出力します。
- SAYKA
- ベストアンサー率34% (944/2776)
EUCもUTFも違う数値で文字を表しているのは知っている?(主に漢字。基本半角アルファベットは共通なので化けないのが普通) サーバ側が送り出してる文字コードをtera側では識別できないから最初からteraにどの文字コードで文字を表示させるのか決めておかなければならないって話。
お礼
>EUCもUTFも違う数値で文字を表しているのは知っている 知っています。 概念はわかるのですが、では設定をどうすれば良いか知りたいのです。 回答ありがとうございました。
補足
回答ありがとうございます。 rootユーザーでは echo $LANG POSIX 一般ユーザーでは ja_JP.UTF-8 でした。