system management
1752794 メンバー
5782 オンライン
108789 解決策
新規ポスト

漢字コード(EUC,SJIS)の切替

 
K_Sa
時折のコントリビューター

漢字コード(EUC,SJIS)の切替

いつも参考にさせて頂いています。

下記の件を実現させたいのですが、どのようにしたらできるのか知っている人がいたら教えて下さい。

・1台のb2600(OSは11.00)で、漢字コードのEUCとSJISを切替られるようにしたい。

・漢字コードを切り替えたときは、リブートからやり直す。

・漢字の切替をしたい理由は、「EUC対応のアプリ」と「SJIS対応のアプリ」があるからです。

[試してみてダメだったこと:EUC→SJIS]

1)/etc/rc.config.d/LANG の中味をSJIS用に変更

2)リブート

3)「SJIS対応のアプリ」のホームディレクトリへログイン

  ホームディレクトリの .profile の中で LANG の指定をしているので

  set コマンドで確認すると

LANG=ja_JP.SJIS

となっている。

ただし、ll コマンドで表示すると文字化けしている ★★★

しかし、パソコンから TeraTerm でログインして ll コマンドを行えば

文字化けもしないで、正しく表示されていた(不思議)

6件の返信6
uhyo
貴重なコントリビューター

漢字コード(EUC,SJIS)の切替

3)のログインってCDEへのログインのことをおっしゃってますか?

以下はそれを前提にした場合の話です。

基本的に/etc/rc.config.d/LANGは起動時の各デーモンのデフォルトのLANGに影響があるだけで、

CDE、telnetのように独自設定がある場合には

意味がないです。

CDEの場合、/usr/dt/config/Xconfig(/etc/dt....があればそちらを優先)でLANGの設定ができますし、

基本設定を変えたくないならCDEのログインオプションで言語の設定がかえられると思います。

そのあたりをお試しになってはいかがでしょうか?
テレコム担当者
尊敬されているコントリビューター

漢字コード(EUC,SJIS)の切替

文字化けというのは以下のような化けですか?

#ll

ケ邱ラ 10

-rw-rw-rw- 1 root sys 160 12キ 25ニ 2003ヌッ aaa

この場合は文字コード(SJIS/EUC)のケースです。

/etc/dt/config/Xconfig の内容を以下のように変更した後 dtconfig -reset を

しましょう。

Dtlogin*language: ja_JP.eucJP

違う文字化けならば stty の問題ですかね?

stty -parity -istrip -ixany cs8

yoshimura
レギュラーアドバイザー

漢字コード(EUC,SJIS)の切替

漢字コードの切り替えですが、以下の点に注意が必要です。

- "LANG" 環境変数

"LANG" 環境変数は、コマンドが動作する際に

参照する言語環境情報で、マルチバイト対応の

プログラムは通常この環境変数をみて、言語

コードを判断します。

たとえば日付を表示する "date" コマンドは、

1) $ LANG=C date

2) $ LANG=ja_JP.SJIS date

3) $ LANG=ja_JP.eucJP date

で出力されるメッセージのコードが変わります。

1) は英語で、2) は SJIS コードの日本語で、

3) は EUC の日本語で日付を出力します。

- 表示環境

コマンドなどが EUC, SJIS コードを切り替え

ても、表示する環境がそのコードを認識して

適切な表示をするようになっていないと

文字化けが発生します。

先の "ll" の日付情報が文字化けするの

であれば、これが影響していることが

考えられます。

CDE のログイン時に eucJP を選択した場合、

CDE 上で起動する "hpterm" や "dtterm" は

  eucJP を取り扱うように動作します。

この環境で SJIS での表示をするようにする

には、

$ LANG=ja_JP.SJIS dtterm

として、SJIS 環境の dtterm を起動して、

そのdtterm 上で SJIS を取り扱うようにすると

うまく表示できると思います。

因みに TeraTerm は端末ソフト上で表示・

入力用の漢字コードの変換設定ができるので、

SJIS 環境である Windows上でも EUC の表示・

入力ができるようになっています。

- 取り扱うデータ

LANG 環境変数ではコマンドが出力する

メッセージなどの言語を定義していますが、

ファイルの内容など既に提供されている

データの変換までは行ないません。

なので SJIS コードの漢字のファイル名を

つけた場合、SJIS コードの文字列でファイル

名が記録されますので、EUC 操作環境でその

ファイル名を表示しても、EUC には変換され

ません。

もし "ll" の結果で、日本語ファイル名が

文字化けする、ということであればこの

為だと思いますので、SJIS, EUC どちらの

環境でも取り扱える英語ファイル名にした

方が良いと思います。

ファイルの中身に関しても変換はしませんので、

SJIS テキストファイルを EUC 環境で日本語と

して表示して取り扱うには "iconv" コマンド

などでコード変換をする必要があります。

参考になれば幸いです。

K_Sa
時折のコントリビューター

漢字コード(EUC,SJIS)の切替

早速の返答ありがとうございます。

>3)のログインってCDEへのログインのことをおっしゃってますか?

→CDE環境は未使用にしています。

(dtconfig -d)

>文字化けというのは以下のような化けですか?

>   #ll

>   ケ邱ラ 10

>   -rw-rw-rw- 1 root sys 160 12キ 25ニ 2003ヌッ aaa



 そうです。こんな感じ(漢字?)の文字化けです。

>/etc/dt/config/Xconfig の内容を以下のように変更した後 dtconfig -reset を

>   しましょう。   

>   Dtlogin*language: ja_JP.eucJP



 上記は、CDE環境の場合ですかね。

 /etc/dt/config/Xconfig は

 Dtlogin*language: ja_JP.SJIS

 (EUC→SJIS変更)

 になっていました。

K_Sa
時折のコントリビューター

漢字コード(EUC,SJIS)の切替

yoshimura さんへ

>$ LANG=ja_JP.SJIS dtterm  

>として、SJIS 環境の dtterm を起動して、

>そのdtterm 上で SJIS を取り扱うようにすると

>うまく表示できると思います。



 うまく表示できました。たいへん参考になりました。

 ただし、「SJIS対応のアプリ」の動作は、まだできていません。

> - 取り扱うデータ 

> LANG 環境変数ではコマンドが出力する

> メッセージなどの言語を定義していますが、

> ファイルの内容など既に提供されている

> データの変換までは行ないません。



 元々の本質問の趣旨は下記のことだったのです。

 ・1台目:OS環境(EUC)+アプリ環境(EUC)

 ・2台目:OS環境(SJIS)+アプリ環境(SJIS)

 アプリの漢字コードが違うために、システムのメンテナンスを行うためには、必ずマシン(b2600)が2台必要になっているのが現状です。

 マシンを1台にして、OSの漢字環境(EUC,SJIS)を切り替えてどちらのアプリも動作できるようにしたいのです。

 HDを増設して、デュアルブート(本体:EUC、増設HD:SJIS)にしたらできるのかもしれませんが、まず、OSの環境変更で、できる手段はないものかと、考えています。

K_Sa
時折のコントリビューター

漢字コード(EUC,SJIS)の切替

投稿者です。

解決しました。

「SJIS対応のアプリ」を、EUS環境(OS,アプリ)にコピーしたのですが、

.profile が

$HOME/.Xdefaults-$HOSTNAME

を参照するようにしていたのです。

よって、「.Xdefaults-$HOSTNAME」が見つからなかったために、当該ファイル内で定義していたフォントが見つからなかったので、正しく日本語表記の ll コマンドが実行できなかったようです。

ご迷惑をかけて申し訳ありませんでした。

CDE環境を未使用の場合の、漢字コードの切替(EUC→SJIS)をまとめると、下記のようになります。

1)/etc/rc.config.d/LANG の中味をSJIS用に変更

2)リブート

3)ホームディレクトリの次の確認

  a).Xdefaults (または、.Xdefaults-$HOME)

  b).x11start

  c)FEP(atok等)の入力モードがSJISになっていること