- ベストアンサー
Linux・Windows間の文字コード変換方法を教えて下さい
Linuxの携帯電話(i-mode)向けのWebサーバを立上げ、WindowsのPCからHTMLファイル等を更新することを考えていますが、文字コードの変換方法がよく判りません。変換方法、ツール等を教えて頂けないでしょうか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 うう、このままではトンヅラこいたと思われてしまいますので、再度書かせてもらいます。 i-mode用のサイトは作ったことがなかったので、コードがSJIS限定とは知りませんでした。 あと、私はPHPは使ったことがないのです。Perl一辺倒です。 ということでPerlを使う場合のことを書きますが、サーバーがWindowsか、もしくはjperlならばSJISで書くのですが、Linuxの場合、PerlのソースはEUCコードで書かないと正しく動作しません(SJISでも「動く場合もある」のですけど)。 従いまして、同じようなケースなら私は出力時に有名なライブラリ「jcode.pl」を使ってEUC→SJISに変換するでしょう。ソースコード内のリテラルはEUCで書かれているからです。 メッセージは別にデータベース(MySQLとか、DBMなど)に持っておいて、ソースはそれを呼び出すだけと言うような話であれば、データはSJISにしておくでしょう。この場合、ソースにはASCII文字以外は使用されないことになります。 PHPはSJISに対応しているのかもしれませんので、普通にSJISで書けば問題ないかもしれません。Perlでは上記のような対応が必要になります。
その他の回答 (4)
- toshihiko_ooishi
- ベストアンサー率33% (175/520)
(#2の方が回答しないようなので・・・) 自分はPHPを使ったことはないですが、処理はCGIと同じサーバ上で行なわれるので、文字コードはともかく、改行だけはLFに変換した方が無難かと思います。 コマンドの類は皆英数字なので、シフトJIS+LFでも動作には問題ないかと思います。
- MomijiPanda
- ベストアンサー率50% (13/26)
i-modeはシフトJISしか使用できません。 ※参考URLをご覧ください。 端末側で対応している(今後する)可能性もあり ますが、ドコモの仕様(ルール)を守られた方が 良いでしょう。 すでに書き込まれた方もおっしゃっている通り、 WindowsやMacintoshでは通常、何もしなくても シフトJISが使用されます。 そのため、普通にFTPなどでアップすれば 問題ありません。
- daibutsuda
- ベストアンサー率34% (268/780)
普通のhtmlを載せるだけであれば、#1の方もおっしゃっているようにわざわざコード変換する必要はないですね。 SJIS+CRLF改行のファイル(Windowsのテキストエディタで生成されるファイル)をそのまま載せておけば問題ないでしょう。 問題になるのはPerlなどでCGIを立ち上げる場合です。Linux上で動作しているPerlはたいていの場合英語版ですから、EUCコード+CR改行でないとちゃんと動きません。 で、コード変換の方法ですが、一番簡単なのは秀丸エディタやViViといったコード変換機能を持ったエディタを使用することです。これらのエディタではセーブする時にコードと改行を選ぶことができます。Linuxで動作するCGIを書きたいのであれば、EUC+CR改行としておくと良いでしょう。NotepadではSJIS+CRLF改行のファイルしか作成できません(Windows2000/XPのものはUnicodeも使えますが)。 ちなみに、秀丸エディタもViViもシェアウェア(有償)です。私はViViを使っています。 nkfというコード変換コマンドや、ほかにもWindows用のコード変換プログラムはあります。また、FTPソフトによってはアップロード時にコードを変換する機能があるものもあります。この辺は、ソフトのマニュアルを読めばわかると思います。 あと、FrontPageなどのhtmlエディタではファイルのプロパティでコードを変更することが可能です。
- toshihiko_ooishi
- ベストアンサー率33% (175/520)
質問の意味がよくつかめませんが、LinuxはUNIXの互換OSなので、当然、漢字コード=EUC、改行=LFですよね。iswebなんかの一般のホームページスペースと同じような環境と考えておけば良いのではないでしょうか。 というわけで、わざわざ変換する必要がありますか? HTMLファイルをシフトJISのままサーバに載せても、問題ないかと思いますが、どうでしょう? それでも、ファイルを変換する場合は、 Windows <-> Linux ・Shift-JIS <-> EUC ・CR+LF <-> LF としておけばいいと思います。
補足
PHPの場合もCGIと同様に変換する必要があるのでしょうか。