- ベストアンサー
文字コードEUC→SHIFT-JISにすると動作しません
http://cgikon.com/search/detail.php3?menu=1&cgi_id=412 上記の簡単なスクリプトを使いたいと思っています。 文字コードがEUCとなっており、そのままの状態で設置すれば動作します。 EUCではなく、SHIFT-JISにして動作させたいのですが、中に書かれている「EUC - JP」を「SHIFT - JIS」に書き換えて、またファイルの文字コードも「SHIFT-JIS」として保存しました。 またCSVデータも「SHIFT-JIS」に変換して保存。 変換したファイルをアップしてみましたが、表示される表の数値の箇所が真っ白になってしまいます。 一番上の行と一番左の列は表示されます。 足し算される数値の部分だけが表示されません。 どのようにすれば、EUCからシフトJISに変換して、動作させる事ができるのでしょうか。 アドバイスをお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> なぜシフトJISにすると、全角スペースがあるとダメだったのか分かりませんが、とりあえず解決して良かったです。 ShiftJISの場合、全角空白は 0x81 0x40 という並びです。 >echo " "|hexdump 00000000: 22 81 40 22 0A ".@". 見事に '@' が隠れているのでこれが誤動作の引き金になりえます。
その他の回答 (4)
- maoo2022
- ベストアンサー率59% (110/185)
*>魔王も?ですね。 失礼しました、でも解決できてよかったですね。 分かっている方は居られるようですが、お尋ねしてみてはどうでしょう。 ◇2003年04月15日 ひさしぶりにWebCore改造 {http://ch00143.kitaguni.tv/}
お礼
ご回答ありがとうございます。 参照先のURLを拝見させて頂きました。 まだ私には理解できなかったです(^^; ありがとうございました。
- maoo2022
- ベストアンサー率59% (110/185)
*失礼しました、解決策はあるようです。↓ ◇QNo.967641 HTML・PHPの文字化け {http://okwave.jp/qa967641.html} *> eucにするとちゃんと表示されるのですが ということですので、おそらくサーバからは正しく EUC で... ANo.3, ◇WEBプログラミング NOW!: *Yahoo! Japanのディレクトリーに掲載されました {http://shimax.cocolog-nifty.com/search/2006/11/index.html} 以上のページを参照ください。
お礼
ご回答ありがとうございます。 原因が分かり解決しました(^^) No1さんの所で解決方法を記載しておきましたので、よろしければご覧になって下さい。 原因は「全角スペース」でした。 でも、EUC-JPでは問題なかったのに、シフトJISだと全角スペースがあるとダメだったのか分からずです。 理由が分かる場合は、教えて頂けると助かります。
- maoo2022
- ベストアンサー率59% (110/185)
アップデートした、サーバーで使えるエンコードが[UTF-8][EUC - JP]などに限定されていませんか? ◇サーバー業者に確認をされるのをお勧めします。 *ウェブページによって、エンコードは変わります。
お礼
ご回答ありがとうございます。 >アップデートした、サーバーで使えるエンコードが[UTF-8][EUC - JP]などに限定されていませんか? こんなサーバーって今どきあるのでしょうか? 利用しているサーバは、どの文字コードでも使えるようです。 あと原因が判明して、解決する事ができました。 解決方法についてはNo1さんの所に記載しておきました。 なぜ全角スペースが悪かったのか理由が分からないので、もし分かる様でしたら理由を教えて頂けると助かります。
- Suzi
- ベストアンサー率38% (130/334)
何故shift_jisにするのかが分りませんが、jcode.pl かjcode.pmによる変換の箇所(convert)のところを、eucからsjisにしてみてはどうでしょうか。
お礼
ご回答ありがとうございます。 自己解決する事ができました。 原因は、数値を出力する箇所の「$_」の前に、全角スペースが入っていたためでした。 試しにこの全角スペースを削除したら、無事に数値が表示され表計算されました。 なぜシフトJISにすると、全角スペースがあるとダメだったのか分かりませんが、とりあえず解決して良かったです。 あと、シフトJISにする理由ですが、シフトJISで記述されている別のCGIにこの表計算CGIを組み込むからです。 Perlには詳しくないので、結構悪戦苦闘してしまいました(笑)
お礼
ご回答ありがとうございます。 なるほど。 詳しい仕組みは完全には理解できないのですが、EUC-JP形式の全角スペースがシフトJISにすると、変換上で別の文字が隠れているような形になってしまい、うまく数字の部分が表示されなかったようですね。 EUC-JPからシフトJISに変換してから使用する機会は少ないと思いますが、今回の事で全角スペースには注意するしなければならない事が分かりました。 的確な解説をありがとうございました。