【 HP作成質問箱 】
| Page-1
【HP作成質問箱/詳細】 一覧 / 詳細
-
No.9954 文字化け
[oyama] [ブラウザ] 09/06/15 (月) 09:45
-
▼ ▼ ▼
-
No.9955 Re:文字化け
[oyama] [ブラウザ] 09/06/15 (月) 09:52
-
「追加」
CGI(Perl)だと、文字化けしてしまいます。▼ ▼ ▼ -
No.9956 Re^2:文字化け
[atom] [ブラウザ] 09/06/15 (月) 10:17
-
Perlは基本的にeuc-jpコードが標準のようです。
Windowsは基本sjisですよね?
その文字コードの違いにより文字化けするのです。
入力パラメータで日本語を扱うには、日本語処理の機能を組み込む必要があります。
掲示板で説明するのは難しいので、Googleの検索結果を貼っておきます。
http://www.google.co.jp/search?hl=ja&q=perl+%E6%97%A5%E6%9C%AC%E8%AA%9E+%E5%A4%89%E6%8F%9B&lr=&aq=4&oq=perl+%E6%97%A5%E6%9C%AC%E8%AA%9E
▼ ▼ ▼ -
No.9959 Re^3:文字化け
[oyama] [ブラウザ] 09/06/15 (月) 20:05
-
require "jcode.pl";
$param=@ARGV[0];
jcode::convert(\$param,'euc');
print $param;
と記述しましたが、サーバーエラーでは無いようですが、
何も表示されません。▼ ▼ ▼ -
No.9960 Re^4:文字化け
[atom] [ブラウザ] 09/06/15 (月) 23:04
-
「jcode.pl」は同一フォルダに設置しましたか?
どんな状態でテストされてるのかよくわかりませんが、上記のような記述ではエラーで実行されないでしょう?
通常であれば、まずは次のようなテストをするべきですが。
このような簡単なテストはされたのでしょうか?
難しいことを一度にせず、簡単なテストをたくさん繰り返して、どこまでなら正しく動作するのか、テストをすべきですよ。
#!/usr/bin/perl
#↑この行は半角で記述する
require "jcode.pl";
$param="日本語テスト";
jcode::convert(\$param,'sjis');
print "Content-type:text/html\n\n";
print $param;
▼ ▼ ▼ -
No.9961 Re^5:文字化け
[oyama] [ブラウザ] 09/06/16 (火) 09:09
-
>「jcode.pl」は同一フォルダに設置しましたか?
設置しています。
「jcode.pl」を作成し、
http://srekcah.org/jcode/jcode.pl-2.13
からダウンロード(コピー)しました。
しかし、
500サーバーエラーになってしまいます。
require "jcode.pl";
$param="日本語テスト";
jcode::convert(\$param,'sjis');
print "Content-type:text/html\n\n";
print $param;▼ ▼ ▼ -
No.9963 Re^6:文字化け
[atom] [ブラウザ] 09/06/16 (火) 16:45
-
私がサーバーでテストしたらちゃんと表示されましたがねぇ。
では2箇所潰した、次のような記述では正常に表示されるのでしょうか?
#require "jcode.pl";
$param="日本語テスト";
#jcode::convert(\$param,'sjis');
print "Content-type:text/html\n\n";
print $param;
それと、テスト用のCGIと「jcode.pl」のパーミッションは「755」になってるでしょうか?
▼ ▼ ▼ -
No.9964 Re^7:文字化け
[oyama] [ブラウザ] 09/06/16 (火) 19:31
-
はい。
正常に表示されました。▼ ▼ ▼ -
No.9965 Re^8:文字化け
[atom] [ブラウザ] 09/06/16 (火) 22:27
-
では、
require "jcode.pl";
$param="日本語テスト";
#jcode::convert(\$param,'sjis');
print "Content-type:text/html\n\n";
print $param;
これでは?
この方法は、定義しただけで実際には呼び出してません。
▼ ▼ ▼ -
No.9966 Re^9:文字化け
[oyama] [ブラウザ] 09/06/17 (水) 08:42
-
ありがとうございます。
サーバーエラーが発生してしまいました…▼ ▼ ▼ -
No.9967 Re^10:文字化け
[atom] [ブラウザ] 09/06/17 (水) 18:07
-
となると、
require "jcode.pl";
この行がおかしいということになります。
これは単純に「jcode.pl」を読み込むだけですが、それがエラーになるということですね。
なら、
1.「jcode.pl」が存在しない。
2.「jcode.pl」が壊れてる。
3.「jcode.pl」が正しく設置できてない。
4.パーミッションが間違ってる。
などが考えられます。
サーバーに設置した「jcode.pl」のファイル名を「jcode.txt」に変更し、この掲示板に添付してください。
こちらでも確認してみます。
▼ ▼ ▼ -
No.9968 Re^11:文字化け
[oyama] [ブラウザ] 09/06/17 (水) 19:38
-
ありがとうございます。
ファイルを振付けます。▼ ▼ ▼ -
No.9969 Re^12:文字化け
[atom] [ブラウザ] 09/06/17 (水) 19:47
-
やっぱり..
これじゃあエラーになります。
改行が全く入ってません。
画面上のものをそのままコピーしましたね。
本当は「ソース表示」してそれを張りつけるか、ちゃんとダウンロードしないとだめですよ。
次の方法を試してみてください。
1.そのリンクを右クリック
2.「対象をファイルに保存」をクリック
3.名前を「jcode.pl」にして保存
それでもうまくいかない場合はこちらで方法を考えます。
▼ ▼ ▼ -
No.9970 Re^13:文字化け
[oyama] [ブラウザ] 09/06/17 (水) 19:54
-
ありがとうございます!
試してみたら上手くいきました!
しかし、
【記述】
require "jcode.pl";
$param=@ARGV[0];
jcode::convert(\$param,'sjis');
print "Content-type:text/html\n\n";
print $param;
【アクセス】
http://○○○/exa.cgi?ANIMEドラえもん
パラメータを取得すると、文字化けしてしまいます▼ ▼ ▼ -
No.9971 Re^14:文字化け
[atom] [ブラウザ] 09/06/18 (木) 12:47
-
いろいろ調べてみました。
すると「jcode.pl」は、内部(スクリプト内)の文字のコード変換には有効ですが、パラメータ入力の日本語に対してはどうしてもうまくできませんでした。
それはブラウザが標準でsjis、ところがperlはeucが標準のため、パラメータを受けた時点で既に文字化けしてる可能性がありそうです。
そこで、よそ様のcgi、また、このサイトの提供しているスキンボードcgiで使用している方法の方が近道だと感じてきました。
それは「cgi-lib.pl」を使用する方法です。
■ 作成サンプル
require 'cgi-lib.pl'; #&ReadParse(*in)の為必要
&ReadParse(*in);
( $key, $value ) = each( %in );
print "Content-type:text/html\n\n";
print "$key";
です。
また、呼び出し方法は、urlエンコードをして呼び出す必要があります。
×exa.cgi?ANIMEドラえもん
○exa.cgi?ANIME%83h%83%89%82%A6%82%E0%82%F1
上記の説明で専門的な知識がいろいろ出てきますが、ネット検索などで調べてください。
ここの掲示板で説明してるときりがありませんから。▼ ▼ ▼ -
No.9972 ありがとうございました
[oyama] [ブラウザ] 09/06/18 (木) 20:47
-
ありがとうございました。▼ ▼ ▼
-
No.9955 Re:文字化け
| Page-1
$param=@ARGV[0];
http://○○○/exa.cgi?ANIMEドラえもん
URLに日本語が含まれていると、日本語が文字化けして今います。
対策方法は無いでしょうか?