アカウント名:
パスワード:
> 使用エンコーディングはLC_CTYPE ロケールによって決定されるので
LC_CTYPE=ja_JP.SJIS cat /smbfs/w32host/シフトジスなファイル名 LC_CTYPE=ja_JP.EUC cat /export/samba/日本語EUCなファイル名 LC_CTYPE=zh_TW.Big5 cat /home/guest/たまに繁体中国語ファイル名
$ hogeedit ファイル名はEUCだけど中身はSJISなファイル
$ env LC_TYPE=ja_JP.SJIS ファイル名は(以下略)
え、ソースみりゃ分る? ごめんなさい先生……(_ _)
先生じゃないけど、お答えします。
できるようです。もちろん、入力方法を別途用意しないといけないし、ターミナルの表示コードも別途切り替えないといけないですよ。
そんな極悪なことをやらないほうがいい、という忠告はさておき、やりたい場合は、
$ LC_CTYPE=ja_JP.eucJP $ LC_CTYPE=ja_JP.SJIS hogeedit ファイル名はEUCだけど中身はSJISなファイル
とすればいいのだと思います。
べつにソースを見るまでしなくても、試してみればいいやん。
実際、localeライブラリによっては、さくさく動的に切り替えられる場合もあれば、うまく気を使って呼び出してやらないと切り替わらない場合もありまして(そもそも全然切り替え不可能なのも多かったけど)、やっぱり特定環境で動いたからといって、プログラマが「動的切り替えを考慮したかどうか」という意図は図れないんでありますよ。元のACがそういう意図で聞いたのか、あるいはもっと別の意図か、単なる不精かは分りませんけれども。
――学生時代、localeまわりのえらい先生に怒られた人より。
nkf が Big5 -> eucJP/SJIS とか変換できるなら、それでいいんじゃない ;-)?
$ grep SJIS文字列 ファイル名はEUCだが中身はSJISなファイル達...
もちろん、今回話題になっている bash の機能を使って何とかしろ、 という質問だったら、「できません」というのが答えになると思うけど。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
人生の大半の問題はスルー力で解決する -- スルー力研究専門家
LC_TYPEの使い分け (スコア:0)
え、ソースみりゃ分る? ごめんなさい先生……(_ _)
Re:LC_TYPEの使い分け (スコア:1)
先生じゃないけど、お答えします。
できるようです。もちろん、入力方法を別途用意しないといけないし、ターミナルの表示コードも別途切り替えないといけないですよ。
そんな極悪なことをやらないほうがいい、という忠告はさておき、やりたい場合は、
$ LC_CTYPE=ja_JP.eucJP
$ LC_CTYPE=ja_JP.SJIS hogeedit ファイル名はEUCだけど中身はSJISなファイル
とすればいいのだと思います。
べつにソースを見るまでしなくても、試してみればいいやん。
Re:LC_TYPEの使い分け (スコア:1, 参考になる)
実際、localeライブラリによっては、さくさく動的に切り替えられる場合もあれば、うまく気を使って呼び出してやらないと切り替わらない場合もありまして(そもそも全然切り替え不可能なのも多かったけど)、やっぱり特定環境で動いたからといって、プログラマが「動的切り替えを考慮したかどうか」という意図は図れないんでありますよ。元のACがそういう意図で聞いたのか、あるいはもっと別の意図か、単なる不精かは分りませんけれども。
――学生時代、localeまわりのえらい先生に怒られた人より。
Re:LC_TYPEの使い分け (スコア:0)
先入観で #131819 書いてました。すいません。
Re:LC_TYPEの使い分け (スコア:0)
>> もちろん、入力方法を別途用意しないといけないし、ターミナルの表示コードも別途切り替えないといけないですよ。
nkfとか使って逃げるというのは邪道でしょうか?
>> $ LC_CTYPE=ja_JP.SJIS hogeedit ファイル名はEUCだけど中身はSJISなファイル
Re:LC_TYPEの使い分け (スコア:1)
いくらなんでも、そんなにタイプしているはずがないので調べたら
euc-jp だったはずのファイルがいつのまにか
Non-ISO extended-ASCII English text
とやらゆうものになっていました。
emacs で開いて読み書きをしている間は全然気になっていませんでしたが、cat で古いファイルを見ようとしたら読めなかった。
コードを強制的に euc-jp に設定しなおしました。
これで、エラーにならなかったので euc-jp であらわせない文字がまぎれこんでいた、というわけでもなさそう。
というわけで、自動に頼っていると便利だけど落し穴もあるよと
信ずる者は掬われる。
Re:LC_TYPEの使い分け (スコア:0)
nkf が Big5 -> eucJP/SJIS とか変換できるなら、それでいいんじゃない ;-)?
Re:LC_TYPEの使い分け (スコア:0)
Re:LC_TYPEの使い分け (スコア:1)
もちろん、今回話題になっている bash の機能を使って何とかしろ、 という質問だったら、「できません」というのが答えになると思うけど。
Re:LC_TYPEの使い分け (スコア:1)
Re:LC_TYPEの使い分け (スコア:0)
> bashのLC_CTYPEは動的に変更可能ですか?
それをやるためには、ターミナルエミュレータ(というか、表示デバイス)
も動的にエンコーディングを解釈しないといけませんね。とりあえず、現上では出来ないようです。
必要ならば、別にシェルを立ち上げるしかないようですね。
あと、いろんなエンコーディングで shell つかうと
history にいろいろなエンコーディングが混じるっつーのもあります ね。
現実的に多言語を使いたい場合、UTF-8 を選ぶのが無難でしょう。
だからといって、*UTF-8 しか* 使えないプログ