68user's page 掲示板

Prev< No. 4236〜4239> Next  [最新発言に戻る] [過去ログ一覧]
No. 4236 # まつ 2005/08/10 (水) 10:37:03
>>4235 zsh
お察しの通り、問題のあるサーバだけLC_ALLが設定されていました!

--動かないサーバー-----------
LANG=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=JA16SJIS
--問題ないサーバー-----------
LANG=ja_JP.PCK
LC_CTYPE="ja_JP.PCK"
LC_NUMERIC="ja_JP.PCK"
LC_TIME="ja_JP.PCK"
LC_COLLATE="ja_JP.PCK"
LC_MONETARY="ja_JP.PCK"
LC_MESSAGES="ja_JP.PCK"
LC_ALL=
-----------------------------

1、rootでLC_ALLが設定されているという事でしょうか?
2、問題ないサーバーと同じ環境にするには何処を直せば良いのでしょうか?
3、2がサーバー管理方針などで変更できない場合、C-Shellで
            unsetenv LC_ALL
            setenv LANG ja_JP.PCK
        とすれば良いのでしょうか?

宜しくお願い致します。

No. 4237 # しず 2005/08/10 (水) 11:05:30
>>4232 68user
>コネクションが切れた場合は、connect しなおす必要があります。
コレクションが切れているか否かの検知ですが、クライアントからsendを
行ったときのタイムアウトを検知したときが一般的でしょうか
(むしろこれしかない?)

宜しくお願いします。

No. 4238 # まつ 2005/08/10 (水) 11:28:44
>>4235 zsh
試しに下記を実行してみましたが、元に戻ってしまいました。。
echo内の日本語が文字化け?して「`」になっている為でしょうが
何故未だ日本語が表示できないのでしょうか?
問題ないサーバーではダブルコーテーションで囲まれてるのに
下記結果では囲まれてないのがダメなのでしょうか?
----------------------------------------------------
#!/usr/bin/csh -fx

locale
unsetenv LC_ALL
setenv LANG ja_JP.PCK
setenv LC_CTYPE ja_JP.PCK
setenv LC_NUMERIC ja_JP.PCK
setenv LC_TIME ja_JP.PCK
setenv LC_COLLATE ja_JP.PCK
setenv LC_MONETARY ja_JP.PCK
setenv LC_MESSAGES ja_JP.PCK
locale
echo "ロードエラーチェックリスト作成処理($0) 開始"
----------------------------------------------------
locale
LANG=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=JA16SJIS
unsetenv LC_ALL
setenv LANG ja_JP.PCK
setenv LC_CTYPE ja_JP.PCK
setenv LC_NUMERIC ja_JP.PCK
setenv LC_TIME ja_JP.PCK
setenv LC_COLLATE ja_JP.PCK
setenv LC_MONETARY ja_JP.PCK
setenv LC_MESSAGES ja_JP.PCK
locale
LANG=ja_JP.PCK
LC_CTYPE=ja_JP.PCK
LC_NUMERIC=ja_JP.PCK
LC_TIME=ja_JP.PCK
LC_COLLATE=ja_JP.PCK
LC_MONETARY=ja_JP.PCK
LC_MESSAGES=ja_JP.PCK
LC_ALL=
echo [hG[`FbNXg(/disk18/acua/acua01/sh/FNC07998.csh) Jn
不整合 - `
----------------------------------------------------

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 4239 # 68user 2005/08/10 (水) 11:53:31
>>4238 まつ
実験してみましたが、うまくいかないサーバには ja_JP.PCK の
ロケールがインストールされていないようです。
>>4232 68user
で「csh のバグでは」と言いましたがこれは誤りで、csh だけが
真面目にエラーチェックしているような感じです。

動かないマシン (Solaris8) の /usr/lib/locale/ja_JP.PCK/:
    LC_MESSAGES/

動くマシン (Solaris2.6) の /usr/lib/locale/ja_JP.PCK/:
    LC_CTYPE/
    LC_MESSAGES/
    LC_TIME/
    ja_JP.PCK.so.1
    locale_description
    methods_ja_JP.PCK.so.1

そして ja_JP.PCK ロケールが含まれているマシンであっても、
    #!/bin/csh
    setenv LANG ja_JP.PCK
    echo "ロードエラーチェックリスト作成処理($0) 開始"
このスクリプトは動作しませんでした。おそらく、ja_JP.PCK にした
時点では、既にスクリプトの字句解析は終了しているからだろうと思います。

対策案は 3つ。

案1.
    - ja_JP.PCK ロケールをインストールする。インストール方法は知りませんが、
        以前他のマシンから /usr/lib/locale/ja_JP.PCK/ をぶっこ抜いてきたことが
        あったっけ。
    - さらに wrapper スクリプトを作る

案2.
    Shift_JIS の「チ」の 2バイト目が ` であることが直接の原因なわけで、
          echo 'ロードエラーチェックリスト作成処理('$0') 開始'
    などと '' で囲んで ` を解釈させないようにする。

案3.
    一番いいのは、スクリプトを EUC-JP に変えて、ロケールを混在
    させないこと。

あと、
> LC_ALL=JA16SJIS
というロケールは存在しないので、おそらく無効なロケール扱いされて
いるでしょう。JA16SJIS って Oracle 的なロケール表記ですから。

LANG と LC_* の関係は以下の URL をどうぞ。
    http://www.jp.freebsd.org/QandA/HTML/2199.html
    http://www.jp.freebsd.org/QandA/HTML/2200.html

Prev< No. 4236〜4239> Next  [最新発言に戻る] [過去ログ一覧]