• 締切済み

半角カタカナ→全角カタカナ変換がうまくいきません。

お世話になっております。 フォームから入力された文字を、 「半角カタカナ→全角カタカナ」変換したいのですがうまくいきません。 コーディングは以下の通りですが、問題の箇所がわかりません。 どなたかご教授ください。 なお、jcode.plは、最新のものを使っています。 #↓=============================================== ##### フォームデータ受け取り if ($ENV{'REQUEST_METHOD'} eq 'POST') {  read( STDIN , $buffer , $ENV{'CONTENT_LENGTH'} ); } else {  $buffer = $ENV{'QUERY_STRING'}; } # 文字コードを正確に取得するために,全ての送信データをいったん文字コードチェックする $buffer1 = $buffer; $buffer1 =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; $kcode = &jcode::getcode(*buffer1); @pairs = split(/&/ , $buffer); ##### フォームデータのデコード、漢字コードをsjisに変換 foreach $pair (@pairs) {  ($k,$v) = split(/=/,$pair);  $v =~ tr/+/ /;  $v =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;  &jcode'convert(*v,"sjis",$kcode);  # 半角カナを全角に変換  if($kcode eq 'sjis') {   &jcode::h2z_sjis(\$v);  }  if($kcode eq 'euc') {   &jcode::h2z_euc(\$v);  }  if($kcode eq 'jis') {   &jcode::h2z_jis(\$v);  }  $in{$k} = $v; } #↑=============================================== (なお、全角スペースは、半角スペースなどに変更願います。) よろしくお願いします。

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

みんなの回答

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.8

文字量が少ないと文字コードの判別が正確にできないので、既に回答があったように文字量を増やす工夫が必要だと思います。 半角カナが混じっても判別精度を上げる方法が下記サイトに記述されてます。 参考にされるといいと思います。 Perlメモ http://www.din.or.jp/~ohzaki/perl.htm#JP_Code jcode.plはかなり古いライブラリーで、今から新しく書くスクリプトではあまりお薦めできません。以下のような変遷をたどっています。 jcode.pl → Jcode.pm → Encode.pm 今は、Encode.pmを使って文字列をUnicode化して使うのが主流です。 ちょっと難しいかもしれませんが、チャレンジしてみてください。 Encode::Guess -- データからエンコーディングを推測する http://www.kt.rim.or.jp/~kbk/perl-5.8/guess.html Perl で半角カナと全角カナの変換をする http://www.serendip.ws/archives/2185 以下、参考コードを書いてみました。 use Encode 'from_to'; use Encode::JP::H2Z; my $v = 'アイウエオ'; print $v, ' -> '; my $enc = getcode($v); die '文字コードが取得できませんでした' if $enc =~ /or/; from_to($v, $enc, 'euc-jp'); Encode::JP::H2Z::h2z(\$v); from_to($v, 'euc-jp', $enc); print $v; sub getcode { my $str = shift; my $ascii = '[\x00-\x7F]'; my $re_sjis_c = '[\201-\237\340-\374][\100-\176\200-\374]'; my $re_sjis_kana = '[\241-\337]'; my $re_euc_c = '[\241-\376][\241-\376]'; my $re_euc_kana = '\216[\241-\337]'; my $re_euc_0212 = '\217[\241-\376][\241-\376]'; require Encode::Guess; my $enc = Encode::Guess::guess_encoding($str, qw/euc-jp shiftjis 7bit-jis/); return $enc->name if ref $enc; if( $enc =~ /shiftjis/ and $enc =~ /euc-jp/ ) { if( $str !~ /^(?:$re_euc_c|$re_euc_kana|$re_euc_0212|$ascii)*$/o ) { if( $str =~ /^(?:$re_sjis_c|$re_sjis_kana|$ascii)*$/o ) { return 'shiftjis'; } } return 'euc-jp'; } return $enc; }

asakichi00
質問者

お礼

ご回答、誠にありがとうございます。 半角カタカナを全角カタカナに変換するのが、簡単にできないとは知りませんでした。 私のような初心者には、難易度が高すぎるようです。 出直した方がよさそうです。 今回の皆様のご回答は、必ず、役立たせたいと思います。 ありがとうございました。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.7

> 半角のアを入力した場合、$kcode=  (値なし) > 半角のアイを入力した場合、$kcode=euc > 全角のアを入力した場合、$kcode=sjis > 全角のアイを入力した場合、$kcode=sjis 何事もなかったかのように書いてますけど、これが問題だと思わなかったのですか? Shift_JISで入力しているのですから、この4つ全て「sjis」になるのが、期待している結果ですよね? それが値なしや「euc」になるってことは、判定に失敗しているってことですよね? 最初の結果は、 Shift_JIS半角カナだけの入力→$kcode='euc'と誤判定→そのままconvertでEUCからSJISへ変換→当然コード不一致で文字化け となったものです。 後の「正しく動いた」と言ってる方も Shift_JIS半角カナだけの入力→$kcode='euc'と誤判定→if( $kcode eq 'euc' )が成立→ h2z_sjisを実行:EUCの場合の処理のはずなのに、SJISのh2zを使っている→元がShift_JISなので、h2z_sjisが期待通りに動作→「正しく動いた」ように見える と、けっして「正しい動作」ではありません。 実際、本当にEUCで入力があって、正しく判定されたとすると EUCの入力→$kcode='euc'と正しく判定→if( $kcode eq 'euc' )が成立→ h2z_sjisを実行→元がEUCなのでなので、h2z_sjisでは誤動作→カタカナばかりの変な出力 となります。 > 半角カタカナ1文字が入った場合、及び、半角カタカナとそれ以外の文字が混在する場合に、正しい結果(半角カタカナ→全角カタカナ変換)が得られません それは、正しくsjisと判定されたときに、なんの処理もしていないからです。 convertの位置がおかしい(→h2zの処理の後にconvertする)なくらいで、最初のプログラムでやりかたは大体あってます。 問題なのは、$kcodeが実際のコードと違うことがある、ということ。 特に、Shift_JISの半角カナはEUCと誤判定されやすい、ということ。 jcode.pl だけでの対策は不可能。#6さんが例示したような「正しく判定されるしくみ」を入れる必要があります。

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.6

http://mikeneko.creator.club.ne.jp/~lab/kcode/jcode.html リンクに jcode の解説がありますので、読んでみてください。半角カナに関しては、次のように書かれています。 > 文字列が半角カナを含んでいる時、文字コードが EUC であるか シフトJIS であるかの判断は非常に困難で、時には誤った結果を返すことがあります。従って、半角カナは、文字コードの自動認識の判断対象からはずされます。文字列に半角カナを含むときの時の、文字コードの自動認識は、保証されません。 文字コードの判別に失敗しているのだと思います。判別の精度を上げるために、input タグの hidden 属性を利用してダミーの文字列を使ってみてはどうでしょうか? CGI 側では捨てるだけで済みます。 <input type="hidden" name="judge" value="ここに判別用の少し長めの全角文字">

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.5

#2の補足にあった例から言えば、誤判定されてる可能性が高いです。 自動判定というは、他のコードにない文字のならびや、使われている文字の比率から予想するもので、文字数が少ないと精度が落ちます。(短くても精度が高いのは、ESC等を使うjisくらいです) 特に、Shift_JISの半角カナはEUC-JPの漢字用の文字と重なる部分が多く、Shift-JISの半角カナが数文字あるだけでは、EUC-JPと誤判定されても不思議はありません。 # 試しに、EUC-JPで書かれたテキストをShift_jisで無理矢理開いてみてください。(ブラウザで文字コードをShift_jisに変更するでもいいです)半角カナの羅列になるはずです。 だから、#2さんも 『「文字コードの判定」が正しくできていることは確実なのですか?』 とおっしゃっているのです。 $kcodeを表示するなりファイルに保存するなりして、確認はしたのですか?

asakichi00
質問者

補足

>$kcodeを表示するなりファイルに保存するなりして、確認はしたのですか? 半角のアを入力した場合、$kcode=  (値なし) 半角のアイを入力した場合、$kcode=euc 全角のアを入力した場合、$kcode=sjis 全角のアイを入力した場合、$kcode=sjis です。 なお、 &jcode'convert(*v,"sjis",$kcode); をコメントアウトし、さらに  if($kcode eq 'sjis') {   &jcode::h2z_sjis(\$v);  }  if($kcode eq 'euc') {   &jcode::h2z_euc(\$v);  }  if($kcode eq 'jis') {   &jcode::h2z_jis(\$v);  } を  if($kcode eq 'euc') {   &jcode::h2z_sjis(\$v);  } のみにすると、半角カタカナの文字化けは解消されました。(理由は理解できていません) ただし、文字化けは解消されたのですが、  ・半角カタカナ1文字の場合、半角のまま。  ・半角カタカナ2文字以上の場合、全角に変換。  ・半角カタカナ1文字以上と全角カタカナの混在の場合、半角、全角それぞれそのまま。  ・半角カタカナ1文字以上と漢字(又はひらがな)の混在の場合、半角カタカナは半角カタカナのまま。  ・半角カタカナ1文字とブランクと半角カタカナ2文字以上の場合、全て半角のまま。  ・半角カタカナ2文字以上とブランクと半角カタカナ2文字以上の場合、全て全角に変換。 という結果になりました。 つまり半角カタカナ1文字が入った場合、及び、半角カタカナとそれ以外の文字が混在する場合に、 正しい結果(半角カタカナ→全角カタカナ変換)が得られません。 引き続き、調査しておりますが、何かお分かりになられましたら、ご教授ねがいます。 よろしくお願いします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

#2 の 2行目を無視された....

asakichi00
質問者

補足

>無視された.... 「無視」という表現は、きわめて心外。 以上

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.3

> &jcode'convert(*v,"sjis",$kcode); > # 半角カナを全角に変換 > if($kcode eq 'sjis') { >  &jcode::h2z_sjis(\$v); > } > if($kcode eq 'euc') { > &jcode::h2z_euc(\$v); > } > if($kcode eq 'jis') { > &jcode::h2z_jis(\$v); > } Shift_JIS に変換してから元の $kcode で半角全角の変換をするのは間違っているのでは? &jcode'convert(*v,"sjis",$kcode); &jcode::h2z_sjis(\$v);

asakichi00
質問者

お礼

ご回答ありがとうございます。 > # 半角カナを全角に変換 > if($kcode eq 'sjis') { >  &jcode::h2z_sjis(\$v); > } > if($kcode eq 'euc') { > &jcode::h2z_euc(\$v); > } > if($kcode eq 'jis') { > &jcode::h2z_jis(\$v); > } の部分を、 &jcode::h2z_sjis(\$v); だけにしたのですが、 結果は同じ(半角カタカナの場合、文字化け)でした。 ご指摘は、こういう意味では、なかったのでしょうか。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「うまくいかない」とは, 具体的には何がどう「うまくいかない」のですか? 「文字コードの判定」が正しくできていることは確実なのですか?

asakichi00
質問者

補足

アイウエオ → 渦慨オ アイウエオ → アイウエオ あいうえお → あいうえお ガギグゲゴ → 衿迎五閤剤 ガギグゲゴ → ガギグゲゴ 亜意宇江尾 → 亜意宇江尾 です。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

どううまくいかないのでしょうか? どんな具合なのか詳細に提示しないとコメントできません。

asakichi00
質問者

補足

回答番号:No.2の1行目と4行目のカタカナは、半角です。

関連するQ&A

  • 半角カナを検出したい

    フォーム入力の半角カナを検出または全角に変換したいです。 ここで同じような質問をいくつかみて、いろいろ試しましたが どうもうまくいきません。 jcode.pl,v 2.6です。 デコード部分は以下のようになってます。 #!/usr/bin/perl require 'jcode.pl'; print "Content-type: text/html\n\n"; $request_method=$ENV{'REQUEST_METHOD'}; if($request_method eq "POST"){ read(STDIN,$query_string,$ENV{'CONTENT_LENGTH'}); }else{ $query_string=$ENV{'QUERY_STRING'}; } @pairs=split(/&/,$query_string); foreach $pair(@pairs){ ($key,$value)=split(/=/,$pair); $key=~ tr/+/ /; $key=~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex($1))/eg; &jcode'convert(*key,'sjis'); $key=~ tr/,/_/; $value=~ tr/+/ /; $value=~ s/%([\dA-Fa-f][\dA-Fa-f])/pack("C",hex($1))/eg; &jcode'convert(*value,'sjis'); $value=~ tr/,/_/; $input{$key}=$value; } よろしくお願いします。

    • ベストアンサー
    • Perl
  • 入力フォームからの半角カナを認識させたい

    入力フォームからの半角カナを全角に変換したいのですが、方法はありますでしょうか。 h2z_sjisを使ってみましたが、うまく行きませんでした。 foreach $pair (@pairs){ ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*name,'sjis'); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis'); &jcode'h2z_sjis(*value); $FORM{$name} = $value; } <結果> アイウエオ(半角) → 渦慨オ よろしくお願いします。

    • ベストアンサー
    • Perl
  • "ー"を含むとサーバーエラーになる

    HTMLのShift_JISに合わせて、Jcode.plで日本語コード変換のeucをsjisに変更したのですが、"ー"が$FORM{'key'}に含むとサーバーエラーになります。 どうしたら、sjisで"ー"など一部文字でエラーなく処理できるのでしょうか? アドバイスお願い致します。 if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name,$value) = split(/=/, $pair); $name2 = $name; $value2 = $value; $FORM2{$name} = $value; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis'); #←ここを変更

    • ベストアンサー
    • CGI
  • Jcode.plを使用してコンバート

    if($ENV{\'QUERY_STRING\'} eq \"\"){ read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'}); }else{ $buffer = $ENV{\'QUERY_STRING\'}; } @pairs = split(\'&\',$buffer); foreach $pair (@pairs) { ($name, $value) = split(\'=\', $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(\"C\", hex($1))/eg; &jcode::convert(\\$value,\'sjis\'); $form_data{$name} = $value; } Getメソッドで文字「?a=あ」をperlのJcode.plを使用してコンバートしましたが、 ブラウザのURL表示部は「?a=%82%A0」となり、shift_jisの16進数表示されてしまいます。 クッキーに取り込んで表示しても??と表示されてしまいます。 何かしら変換しているみたいのですが、 変換方法はあってるのでしょうか?

    • ベストアンサー
    • Perl
  • チェックボックスからの値を受け取る

    つたなくもperlを使ってCGIスクリプトを作っている者です。 <input type="checkbox" name="test" value="1">1 <input type="checkbox" name="test" value="2">2 <input type="checkbox" name="test" value="3">3 上記のように、nameは全て同じ名前にして、データを受け取りたいと思っています。 ただ、 if($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{CONTENT_LENGTH}); } require './jcode.pl'; @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 文字コードをS-JIS変換 &jcode'convert(*value, "sjis", "", "z"); $data{$name} = "$value"; と、最初に$data{test}に格納をしています。 現在は全ての項目にチェックをいれても、 3 と表示されてしまいます。 なんとかjcode.lib以外のモジュールを使わないで、 $data{test}に選択された全ての項目を入れることはできないでしょうか。 ご教授いただけましたら幸いです。

    • ベストアンサー
    • Perl
  • ホームページから意見を送るsendmailのcgiスクリプト

    表題のようなスクリプトを使っているのですが、 普通は特に問題ないのですが、「http://」などから始まる URLのみを書き込んで送ると、空メール(何も記載されない)となって 届いてしまいます。どこがおかしいのかわかりません。 以下のようなスクリプトです。 @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; &jcode'convert(*name,'sjis'); &jcode'convert(*value,'sjis'); if ($name eq 'to') { $to = $value; } if ($name eq 'from') { $from = $value; } if ($name eq 'subject') { $subject = $value; } if ($name eq 'body') { $body = $value; } } # cheack if ($from eq "") { $from = "unknown\@."; } if ($from eq " ") { $from = "unknown\@."; } # send mail &jcode'convert(*from,'jis'); &jcode'convert(*subject,'jis'); &jcode'convert(*body,'jis'); if (!(open(MAIL,"| $sendmail -t"))) { &error('システムエラー','メールの送信に失敗しました。'); } print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain; charset=iso-2022-jp\n"; print MAIL "$body\n"; close(MAIL); # view html &jcode'convert(*from,'sjis'); &jcode'convert(*subject,'sjis'); &jcode'convert(*body,'sjis'); $body =~ s/\r\n/\r/g; $body =~ s/\n/\r/g; $body =~ s/\r/<BR>/g;

    • ベストアンサー
    • CGI
  • UTF-8から送信されたデータを日本語化するには?

    %E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A これを あいうえお に変換するには、どのようにデコードすればいいのでしょうか? ご教授お願いします。m(_ _)m [現在のソース] $buffer = $ENV{'QUERY_STRING'}; @pairs = split(/&/,$buffer); foreach $pair (@pairs){ ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; my $value = Jcode::convert($value, 'utf8'); $FORM{$name} = $value; } ↓ 「縺ゅ>縺・∴縺・」が検出されます。

    • ベストアンサー
    • Perl
  • Sendmailの文字化けについて

    以前にも同じ質問をしたのですが、いまいち解決していないので、もう一度質問させて頂きます。 ホームページでsendmailをつかってフォームより記入してもらった内容を自分のところと確認メールとして記入した人のところに送るようにしていますが、確認メールが文字化けすることがあるようです。 しかし、全ての人に対して化けるというわけではなく、ほとんどの場合は大丈夫なようですが、一部の人に対してだけ化けるようです。 関係しそうな部分を大まかに書くと下記のようにしておりますが、間違っているでしょうか? if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs){ ($name, $value) = split(/=/, $pair); $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis'); &jcode'convert(*name,'sjis'); $xx =$value; &trans; $value = $xx; } sub trans{ $from='[@01-9A-Za-z._-]'; $to='[@01-9A-Za-z._-]'; &jcode'convert(*xx, 'euc'); &jcode'convert(*from, 'euc'); &jcode'convert(*to, 'euc'); &jcode'tr(*xx, $from, $to); &jcode'convert(*xx, 'sjis'); } &jcode'convert(*message,'jis'); if (!open(MAIL,"|$sendmail $mail_address")) {&error;} &jis("Subject: $mailname"); print MAIL "$msg\n"; print MAIL "To: $mail_address\n"; print MAIL "From: $mailfrom\n"; print MAIL "\n"; print MAIL "$message"; close(MAIL); sub jis { $msg = $_[0]; &jcode'convert(*msg, 'jis');}

    • ベストアンサー
    • Perl
  • デコード処理について

    sub decode { if ($ENV{'REQUEST_METHOD'} eq "POST") { if ($ENV{'CONTENT_LENGTH'} > 51200) { &error("投稿量が大きすぎます"); } read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $in{$name} = $value; } while (($k,$v) = each %in) { $v =~ s/&/&amp;/g; $v =~ s/</&lt;/g; $v =~ s/>/&gt;/g; $v =~ s/"/&quot;/g; $in{$k} = $v; } } 上記の処理が、具体的にどうなっているのかよくわかりません。 どなたか分かる方、説明をお願いします。

  • アンケートフォームに機能の付け加え。

    ホームページ上で、訪問者からアンケートを採れるsendmailを使用した CGIを設置しています。ここに、訪問者から簡単な素材を提供して頂けるよう 以下のようなスクリプトに、小さなファイル(gif画像など)を 添付して送れるように機能を付け足したいです。 どうすればいいか、困っています。どうすればよいでしょうか? @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; &jcode'convert(*name,'sjis'); &jcode'convert(*value,'sjis'); if ($name eq 'to') { $to = $value; } if ($name eq 'from') { $from = $value; } if ($name eq 'subject') { $subject = $value; } if ($name eq 'body') { $body = $value; } } # cheack if ($from eq "") { $from = "unknown\@."; } if ($from eq " ") { $from = "unknown\@."; } # send mail &jcode'convert(*from,'jis'); &jcode'convert(*subject,'jis'); &jcode'convert(*body,'jis'); if (!(open(MAIL,"| $sendmail -t"))) { &error('システムエラー','メールの送信に失敗しました。'); } print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain; charset=iso-2022-jp\n\n"; print MAIL "$body\n"; close(MAIL); # view html &jcode'convert(*from,'sjis'); &jcode'convert(*subject,'sjis'); &jcode'convert(*body,'sjis'); $body =~ s/\r\n/\r/g; $body =~ s/\n/\r/g; $body =~ s/\r/<BR>/g;

    • 締切済み
    • CGI

専門家に質問してみよう