電子書籍の厳選無料作品が豊富!

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のロケールが関係している事は推測できるのですが

宜しくお願いします。

A 回答 (5件)

>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に切り替えないと化けます。

ここでいうシステムの出力とは、標準で用意されているコマンドのエラーメッセージ、警告メッセージ、応答メッセージなどのことです。
    • good
    • 0

>「環境変数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コード」が主流となっています。
    • good
    • 0

『根本理由がわかりません、根本理由わかる方教えて頂けますでしょうか?』


画面に表示するデータは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で問題がでるものがあるかも知れませんので試してみるか個別に確認する必要があるでしょう。
    • good
    • 0

「相手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等の値を見て、プログラム内部で文字コード変換してメッセージを出力します。

この回答への補足

回答ありがとうございます。
rootユーザーでは
echo $LANG
POSIX

一般ユーザーでは
ja_JP.UTF-8

でした。

補足日時:2009/01/14 16:38
    • good
    • 0

EUCもUTFも違う数値で文字を表しているのは知っている?(主に漢字。

基本半角アルファベットは共通なので化けないのが普通)

サーバ側が送り出してる文字コードをtera側では識別できないから最初からteraにどの文字コードで文字を表示させるのか決めておかなければならないって話。
    • good
    • 0
この回答へのお礼

>EUCもUTFも違う数値で文字を表しているのは知っている
知っています。

概念はわかるのですが、では設定をどうすれば良いか知りたいのです。
回答ありがとうございました。

お礼日時:2009/01/14 16:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!