プロが教える店舗&オフィスのセキュリティ対策術

UTF-8で作ったPerl内で、UTF-8にエンコードしたい部分とは別に、
EUCやShift-jisにエンコードして、
UTF-8以外の仕様になっている検索エンジンなどの検索結果に、
テキストリンクを飛ばしたいのですが、行き詰まりました。
いい方法はありますでしょうか。

A 回答 (3件)

use utf8;


use Encode;
use URI::Escape;

my $utf8String = 'テスト';

my $urf8BytesEsc = uri_escape(encode('utf8', $utf8String));
my $eucBytesEsc = uri_escape(encode('euc-jp', $utf8String));
my $sjisBytesEsc = uri_escape(encode('shiftjis', $utf8String));

print 'http://www.google.co.jp/search?hl=ja&q=' . $urf8BytesEsc ,"\n";
print 'http://dictionary.goo.ne.jp/search.php?MT=' . $eucBytesEsc , "\n";
print 'http://example.com/search.cgi?sjis=' . $sjisBytesEsc , "\n";
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
こちらのデータで確認できました。
このところほとんどの検索サービスでUTF-8への対応が進んできているため、
用途は減ってきていますが、これでいろいろと試すことができます。
ありがとうございました。

#!/usr/bin/perl

print "Content-type: text/html\n\n";

use utf8;
use Encode;
use URI::Escape;

my $utf8String = 'テスト';

my $utf8BytesEsc = uri_escape(encode('utf8', $utf8String));
my $eucBytesEsc = uri_escape(encode('euc-jp', $utf8String));
my $sjisBytesEsc = uri_escape(encode('shiftjis', $utf8String));

print <<"EOM";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>エンコードテスト</title>
</head>
<body>

<ul>
<li><a href="http://www.google.co.jp/search?hl=ja&q=$utf8Byte …
<li><a href="http://dictionary.goo.ne.jp/search.php?MT=$eucBy …
<li><a href="http://www.google.co.jp/search?hl=ja&q=$sjisByte …
</ul>

</body>
</html>
EOM

お礼日時:2008/05/25 13:24

URLエンコードする前に文字コード変換をするだけだと思いますので、


Perl4とかPerl5.6ならJcodeを利用し、
perl5.8以降ならEncodeでもいけると思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
use Encodeでいくつかテストしてみたのですが、
うまくいきませんでした。
もう少しいろいろと調べてみたいと思います。

お礼日時:2008/02/08 02:36

URL の QUERY_STRING 中のキーワードを


URLエスケープする前の文字エンコーディングをUTF-8以外のものでやりたいということでしょうか。

例えば、

http://www.google.co.jp/search?q=%E6%A4%9C%E7%B4 …



 %E6%A4%9C%E7%B4%A2 の箇所を

UTF-8 以外のエンコーディングの文字列から、URLエスケープしたい
ということでしょうか。
    • good
    • 0
この回答へのお礼

ご確認ありがとうございます。
はい。例えば、
gooや楽天はeucですのでエンコードしたURLで飛ばしたいです。
(すみません、shift-jisは適当なサイトが見つかりませんでした)

具体的には下記のように書いて、
リンク先で文字化けにならなければOKです。

print "gooで「<<a href=\"$goo$entest_euc\">$test</a>」を検索\n";
print "googleで「<<a href=\"$google$entest_utf8\">$test</a>」を検索\n";
↓↓↓↓↓↓↓↓↓↓↓↓
gooで「<a href="http://dictionary.goo.ne.jp/search.php?MT=%A5%C6 …テスト</a>」を検索
googleで「<a href="http://www.google.co.jp/search?hl=ja&q=%E3%83%86 …テスト</a>」を検索

難しいでしょうか。

お礼日時:2008/02/05 06:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!