• ベストアンサー

文字コード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に変換して、動作させる事ができるのでしょうか。 アドバイスをお願い致します。

  • Perl
  • 回答数5
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

> なぜシフトJISにすると、全角スペースがあるとダメだったのか分かりませんが、とりあえず解決して良かったです。 ShiftJISの場合、全角空白は 0x81 0x40 という並びです。 >echo " "|hexdump 00000000: 22 81 40 22 0A ".@". 見事に '@' が隠れているのでこれが誤動作の引き金になりえます。

mintroll
質問者

お礼

ご回答ありがとうございます。 なるほど。 詳しい仕組みは完全には理解できないのですが、EUC-JP形式の全角スペースがシフトJISにすると、変換上で別の文字が隠れているような形になってしまい、うまく数字の部分が表示されなかったようですね。 EUC-JPからシフトJISに変換してから使用する機会は少ないと思いますが、今回の事で全角スペースには注意するしなければならない事が分かりました。 的確な解説をありがとうございました。

その他の回答 (4)

  • maoo2022
  • ベストアンサー率59% (110/185)
回答No.5

*>魔王も?ですね。 失礼しました、でも解決できてよかったですね。 分かっている方は居られるようですが、お尋ねしてみてはどうでしょう。 ◇2003年04月15日 ひさしぶりにWebCore改造 {http://ch00143.kitaguni.tv/}

mintroll
質問者

お礼

ご回答ありがとうございます。 参照先のURLを拝見させて頂きました。 まだ私には理解できなかったです(^^; ありがとうございました。

  • maoo2022
  • ベストアンサー率59% (110/185)
回答No.3

*失礼しました、解決策はあるようです。↓ ◇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} 以上のページを参照ください。

mintroll
質問者

お礼

ご回答ありがとうございます。 原因が分かり解決しました(^^) No1さんの所で解決方法を記載しておきましたので、よろしければご覧になって下さい。 原因は「全角スペース」でした。 でも、EUC-JPでは問題なかったのに、シフトJISだと全角スペースがあるとダメだったのか分からずです。 理由が分かる場合は、教えて頂けると助かります。

  • maoo2022
  • ベストアンサー率59% (110/185)
回答No.2

アップデートした、サーバーで使えるエンコードが[UTF-8][EUC - JP]などに限定されていませんか? ◇サーバー業者に確認をされるのをお勧めします。 *ウェブページによって、エンコードは変わります。

mintroll
質問者

お礼

ご回答ありがとうございます。 >アップデートした、サーバーで使えるエンコードが[UTF-8][EUC - JP]などに限定されていませんか? こんなサーバーって今どきあるのでしょうか? 利用しているサーバは、どの文字コードでも使えるようです。 あと原因が判明して、解決する事ができました。 解決方法についてはNo1さんの所に記載しておきました。 なぜ全角スペースが悪かったのか理由が分からないので、もし分かる様でしたら理由を教えて頂けると助かります。

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.1

何故shift_jisにするのかが分りませんが、jcode.pl かjcode.pmによる変換の箇所(convert)のところを、eucからsjisにしてみてはどうでしょうか。

mintroll
質問者

お礼

ご回答ありがとうございます。 自己解決する事ができました。 原因は、数値を出力する箇所の「$_」の前に、全角スペースが入っていたためでした。 試しにこの全角スペースを削除したら、無事に数値が表示され表計算されました。 なぜシフトJISにすると、全角スペースがあるとダメだったのか分かりませんが、とりあえず解決して良かったです。 あと、シフトJISにする理由ですが、シフトJISで記述されている別のCGIにこの表計算CGIを組み込むからです。 Perlには詳しくないので、結構悪戦苦闘してしまいました(笑)

関連するQ&A

  • EUC⇔Shift_JISの文字コード変換について

    DB(OS:win2003、DBMS:MySQL Server5.0  文字コードはEUC)に対して CSVファイルをインポート、エクスポートしようとしています。 入出力ファイル(CSVファイル)の文字コードはShift_JISのため、 文字コード変換が必要となってきています。 CSVファイルのインポート/エクスポート、文字コード変換は、 php5.2.5で構築しています。 今、エクスポート(EUC→Shift_JIS)したCSVファイルを、 エクセルで確認すると極一部が文字化けしてしまいます。 そこで質問が4つあります。 1.文字化けは仕方ないことなのでしょうか? 2.文字化けする文字を特定することはできるのでしょうか? 3.エクスポート方法、変換方法によって文字化けする文字は変わってくるので しょうか? 4.みなさんはこのような文字化けの問題をどのように回避した経験お持ちですか?   (文字化けは已む無し、文字コードを意地でも統一した、    文字を特定して特殊文字に置き換えたなどなど) 基本的なことと思いますが、よろしくご教授願います。  (3.4.はもっと詳細がわからないと何とも言えないかもしれません。   ご回答頂く為には何を調べればいいのかからも教えてください。   よろしくお願いします。)

    • ベストアンサー
    • MySQL
  • EUCとshift_JIS変換について

    DB(OSはwin2003、DBはmySQL 文字コードはEUC)に対して CSVファイルをインポート、エクスポートしようとしています。 入出力ファイル(CSVファイル)の文字コードはShift_JISのため、 文字コード変換が必要となってきています。 今、エクスポート(EUC→Shift_JIS)したCSVファイルを、 エクセルで確認すると極一部が文字化けしてしまいます。 そこで質問が4つあります。 1.文字化けは仕方ないことなのでしょうか? 2.文字化けする文字を特定することはできるのでしょうか? 3.エクスポート方法、変換方法によって文字化けする文字は変わってくるのでしょうか? 4.みなさんはこのような文字化けの問題をどのように回避した経験お持ちですか?   (文字化けは已む無し、文字コードを意地でも統一した、    文字を特定して特殊文字に置き換えたなどなど) 基本的なことと思いますが、よろしくご教授願います。  (3.4.はもっと詳細がわからないと何とも言えないかもしれません。   ご回答頂く為には何を調べればいいのかからも教えてください。   よろしくお願いします。)

    • ベストアンサー
    • PHP
  • EUCからShift_JISに保存し直す方法

    EUCで書かれたCGIをSHIFT-JISで保存し直す・・ と言う作業の過程での事なのですが・・ 秀丸を開きファイル名を指定して、 文字コードを日本語(EUC)にして、 開きます。 その後秀丸のその他-保存・読み込み-標準の文字コードで 日本語(SHIFT-JIS)にしてみましたが、どうも変わった気配が無く EUCのまんまのような気がします。 やり方間違えてますでしょうか? 秀丸をお使いでご存知の方がいらっしゃいましたら お教え下さいm(__)m

    • ベストアンサー
    • CGI
  • JAVAでのShift-JISとEUC-JP間の文字コード変換ができません

    Windows環境で作成した「Shift-JIS(CP932)」のファイルを、 JAVAを使用して「EUC-JP」のファイルに変換したいのですが、 NEC選定文字(13区)等の追加された機種依存文字の変換ができません。 いろいろ調べてみたのですが、 文字コードの呼び方がサイトによってあいまいで、 どのページが正しいのかがわかりません。 ・「Shift-JIS(CP932)」「EUC-JP」の正確な情報が記述されたサイト ・JAVAにおける文字コードの変換のノウハウ に関しての知識をお持ちの方がいましたら、教えてください。 以下は変換に使用したJAVAのソースコードです。 InputStreamReader ins = new InputStreamReader(new FileInputStream(iFile), "windows-31j"); OutputStreamWriter outs = new OutputStreamWriter(new FileOutputStream(oFile), "euc-jp"); int c; while ((c = in.read()) != -1) { out.write(c); } 以上です。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Shift_JISコードでファイルを生成する方法

    いつもお世話になります。 環境サーバLinax、クライアントWindows2000、IE6でプログラミングしています。 JSPで、FileWriterを使用してCSVファイルを生成しているのですが、EUC-JPコードで記録されてしまい、リンクを張ってもクライアントにダウンロードしたCSVファイルは文字化けしてしまいます。 new String(strVal.getBytes("8859_1"),"Shift_JIS") と変換して書き出しても文字化けが起こるばかりでどうしようも無いです。 どうすればShift_JISでファイルを生成できるのか、またはShift_JISでファイルをダウンロードする方法を教えてもらえないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • EUCで保存されたスクリプトにてShift_jisでのHTML出力

    perl見よう見まねで改造ができるレベルの者です。 表題の件ですが、ある登録スクリプトをEUCで保存し、登録データファイルもEUCで保存を行っているのですが、携帯からも対応させる為に、携帯用ページではShift_jisで表示を行いたいと思っています。 $word = "ああああ"; &jcode'euc2sjis(*word); 上記のようなコードで、EUCで保存されたスクリプト内の文字がShift-JISに変換されるというのを見つけたのですが、これがprint文の場合どうすれば良いのかわかりません。 例えば、 print "Content-type: text/html;charset=shift_jis\n\n"; print <<_HTML_; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <form method="POST" action="CGIファイル"> 登録項目1<br> <input type="text" name="touroku1" value="$in{'touroku1'}"><br> 登録項目2<br> <input type="text" name="touroku2" value="$in{'touroku2'}"> </form> </body></html> _HTML_ 上記のようなHTMLをShift_jisで表示する場合、どのようにすればよいのでしょうか? use encoding 'euc-jp', STDOUT=>'shift_jis' while(<>){ print $_; } 上記のようなコードも調べたのですが、今一適用方法が解らない状況です。 また、携帯用ページではShift_jisで表示を行いたいのと同時に、登録データファイルにはEUCで保存されるようにする方法もご教授頂けますと幸いです。 宜しくお願い申し上げます。

    • ベストアンサー
    • Perl
  • JIS、SHIFT-JIS、EUCはなぜできた?

    教えてください。 文字コードについて調べています。アルファベットはASCIIコードで統一されているために、特に問題がなく、日本語にも JISコードという標準化されているコードがあります。 なので、基本的にはこれをみんなが使えば、文字化けなどという問題には悩まされなくてすむはず。 なのに、なぜ Windows では Shift-JISなどという独特な文字コードを使い、UNIX系では EUCコードを使っているのでしょう。いったい、どの文字コードが一番初めにできて、なぜそれで標準化を図ることができなかったのかなど、日本語文字コードに関する歴史について、ご存知の方、ぜひ教えていただければ幸いです。

  • Shift_JISをeuc-jpに変換

    エクセルのデータをテキストに保存し直したデータがあります。 中身はタブ区切りの日本語の単語が数千レコード。 この時、このテキストファイルの文字コードは当然「シフトJIS」ですが、これをperlで受け取ってフォームから文字検索を行いテーブルに検索結果を表示させるプログラムを作りました。 シフトJISなので案の定、文字化けを起こしました。 なのでデータを一度「euc-jp」に変換すると「表」や「ー」などは文字化けを起こすことなく表示するようになりました。 ところが、「(1)、(2)、(3)・・・」の丸数字だけが何故か文字化けしたままで直りません。 なんとかなりませんでしょうか? #データの読み込み open F_DATA, '<', "$cgiparam" or die;  my @lines = <F_DATA>; close F_DATA; #文字コードの変換 foreach (@lines){  Encode::from_to($_,"Shift_JIS", "euc-jp"); } よろしくお願いします。

    • ベストアンサー
    • Perl
  • EUC-JPとShift_JISのどちらがいい?

    ホームページ制作の時に指定する文字コードについて Shift_JISとEUC-JPのどちらがいいのでしょう? 今までは私自身Shift_JISを使っていましたが、会社的にEUC-JPに統一しようという動きになってきていて、デメリットがあればやめようかなとも思っています。 メリットとデメリットがあれば教えてください。 また、各データベースを使ったりもします。

    • ベストアンサー
    • CSS
  • FC2は文字コードはShift-JISしか使えな

    FC2は文字コードはShift-JISしか使えないのですか? EUC-JPでもUTF-8でも 日本語部分が��������になってしまいます。 添付画像は、UTF-8の時の例です。

    • ベストアンサー
    • HTML

専門家に質問してみよう