• ベストアンサー

日本語のエンコード

日本語 秘華をPHPでエンコードすると $fname = "秘華"; $name = rawurlencode( $fname ); %94%E9%89%D8 になり Perlで 秘華をPHPでエンコードすると $fname =~ s/(\W)/sprintf("%%%02X", ord($1))/ego; %20%94%E9%89%D8 になります PHPエンコードを%20%94%E9%89%D8 になるにはどのようにすべきですか よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数6

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5071/13250)
回答No.1

$fname = " 秘華"; %20 はASCIIコードの 0X20の事で半角スペースです。 Perlの方は処理の中で半角スペースが混ざってるんじゃないですか?

hana3090
質問者

お礼

速い回答ありがとう 半角スペースが前に入っていました おかげで解決しました。

関連するQ&A

  • phpの日本語変換

    perl で日本語を下記のコードで変換しています $fname =~ s/(\W)/sprintf("%%%02X", ord($1))/ego; PHPからperlへの変換のコードがわかりませんよろしくお願いします。

    • ベストアンサー
    • PHP
  • [Perl] unpackで不要文字にエンコード

    Perl CGIについてです。 文字列をエンコードしようと次のようにしてみました。 $val1 =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; $val2 =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; $va1は問題なくエンコードされ、デコードも元文字に戻ったのですが、 $va2のエンコード文字に不要な'25'が含まれるようになってしまいました。 例:「ガム」をエンコード >> %A5%AC%A5%E0  を期待していたのですが、結果は %25A5%25AC%25A5%25E0 と不要に'25'が含まれてしまいました。unpackの文が悪いのでしょうか?ご教示ください。

    • ベストアンサー
    • CGI
  • Perl初心者ですが

    Perl初心者ですが、次の内容を説明してください。 $Word =~ s/(\W)/$escape{$1} ||= sprintf("%%%02X", ord($1))/eg;

    • ベストアンサー
    • Perl
  • ディレクトリ名に日本語をエンコードしたものを入れる

    例えば、[てすと] という文字列をurlencode()関数 でエンコードして %5B%E3%81%A6%E3%81%99%E3%81%A8%5D になりますよね。 でも、自分のサイトで、http://○○○.com/test/%5B%E3%81%A6%E3%81%99%E3%81%A8%5D/index.php にリンクを張ってアクセスしても、アクセスできないのです。 404エラーになってしまいます。 例を挙げるなら、ニコニコ動画のタグ以降のURLは http://www.nicovideo.jp/tag/○○○○○ となっています。 ○○○○○の部分に日本語をエンコードした文字列が入っています。 このような日本語をエンコードした文字列は、どうやって作ればいいのですか? urlencode()関数 で作ったはいいのですが、そこにリンクを張ってもアクセスできません。

    • ベストアンサー
    • PHP
  • 日本語でクッキーを読み書きしたいんですが。

    初心者用の文献読むのですが、クッキーはカウンターの説明ばかりで、日本語を扱えません。 また、クッキーの解説HPでは、 >CGI(Perl)でエンコードするには次のようにします。 >$xx =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; >CGI(Perl)でデコードするには次のようにします。 >$xx =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg; と、書いてあるのですが、どこを書き換えればいいのでしょうか。ぜひご伝授をお願いします。 なお、只今改造中のソースは以下のURL掲載に掲載されております。 http://softplaza.biglobe.ne.jp/text/cgi/cgi13/cgi13-4.html

    • 締切済み
    • CGI
  • アルゴリズム解析をしてるのですが…

    いくつかのperlを解説したページを読んでみたのですが、 以下の文でフォーマットとしての"%02x"の意味と 「^」(演算子?)の意味がわからずつまづいてます。 $val =~ s/./sprintf("%02x",ord($&)^ord($aaa[$i++ % @aaa])))/ge どなたか教えてください・・・

    • ベストアンサー
    • Perl
  • ひらがなから全角カタカナへの変換の仕方

    Perlでひらがなから全角カタカナへの変換の仕方について教えてください。 ここのサイトで「全角カタカナからひらがなへの変換」の仕方が書いてありました。コレを元に逆に指定すれば出来るかな?って思ったのですが。。。どうやればいいのか全くわかりません。たぶんですが文字コードなどで指定しているとは思うのですが。。。どなたかわかる方がいましたら教えて下さい。よろしくお願いします。 #全角カタカナからひらがなへの変換の仕方 $a =~ s/(\x83)([\x40-\x7e])/"\x82".sprintf("%c",ord($2)+0x5f)/eg; $a =~ s/(\x83)([\x80-\x96])/"\x82".sprintf("%c",ord($2)+0x5e)/eg; 上記の逆に「ひらがなから全角カタカナへの変換」出来るようにしたいです。よろしく御願いします。

    • ベストアンサー
    • Perl
  • JSでURIエンコードしてPHPでデコードしたい

    foo.htmlから読み出されたbar.js内で、リファラーをURIエンコードし、baz.phpでデコードするようにしました。 コードは以下です。 ■foo.html <script type="text/javascript" src="bar.js"></script> ■bar.js //PHPのrawurlencode互換のURIエンコード関数(らしいです) function rawurlencode(str) { return encodeURIComponent(str) .replace(/!/g, "%21") .replace(/'/g, "%27") .replace(/\(/g, "%28") .replace(/\)/g, "%29") .replace(/\*/g, "%2A") .replace(/~/g, "%7E"); }; ref = rawurlencode(document.referrer); document.write('<img src="/bar.php?ref=' +ref); ■baz.php rawurldecode($_GET["ref"]); これでfoo.htmlがUTF8であった場合は正常にリファラが取得できました。(日本語も含め) しかし、foo.htmlがShift-JISであった場合、リファラ内の日本語部分が文字化けしてしまいます。 色々と試行錯誤してはみたのですが、どうしても解消されません。 どなたかお力をお貸しください。 よろしくお願いいたします。

  • 日本語エンコードされたディレクトリ

    アマゾンのように最近よく見るのですが、日本語エンコードされたディレクトリ名を表示するのはどのようにしているのでしょうか? 例えば、 http://www.amazon.co.jp/%E3%81%82%E3%81%9F%E3%81%97%E3%83%B3%E3%81%A1-1-%E3%81%91%E3%82%89-%E3%81%88%E3%81%84%E3%81%93/dp/4889913467/ref=rcx_ser_title?ie=UTF8&s=books といった感じです、このディレクトリは静的なものなのでしょうか、動的に生成されるものなのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • Perlのcgi-lib.plでデコードされた文字をUTF-8にエンコ

    Perlのcgi-lib.plでデコードされた文字をUTF-8にエンコードするにはどんなコードを書けば良いのでしょうか。 "あ"という文字をHTMLフォームから受取って%82%A0というS-JISのバイトコードに再エンコードするコードを質問したら $a = "あ"; $a =~ s/([^a-zA-Z0-9*\-.@_])/sprintf("%%%02X", ord($1))/eg; $a =~ s/%20/+/g; print $a; という答えを頂きました。コードの意味はよく判らなかったのですが、ちゃんと思惑通り$aは%82%A0になりますので長い間重宝にさせていただいています。 今度は$a="あ";の値をUTF-8の%E3%81%82にエンコードしたいのですが、どのように上記のコードを変更すればよいか教えてください。正規表現というのを使えば出来るのでしょうが、本で読んでもやっぱりわかりません。

    • ベストアンサー
    • CGI

専門家に質問してみよう