• ベストアンサー

漢字をエンコードする方法

Googleで「テスト」と検索をした時に q=%E3%83%86%E3%82%B9%E3%83%88 と、エンコードされます。 この方法をお教えいただけますでしょうか。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

#2>試したところ%83e%83X%83gとなりました。 ソースコードをシフトJISで書いておられるのだと思います。 ソースコードをUTF-8 に変更できるエディタをお使いであれば、 文字コードをUTF-8 に変えるだけで良いです。 ソースコードをシフトJISで書いていて、Perl の関数で、文字コードの変換をする場合、 例えば、以下のようにすると良いです。 use Encode qw(from_to); $string="テスト"; from_to($string, "Shift_JIS", "UTF-8");#文字列をシフトJISからUTF-8へ変換する $string=~s/(\W)/sprintf("%%%02X",unpack("C",$1))/eg; print $string;

その他の回答 (3)

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

モジュールを使うのはお好みに合いませんか。 > %83e%83X%83g テストという文字列を与えてこの出力になったのならShiftJISで文字列を渡しています。 質問にあるような結果が欲しいのならUTF-8に変換した文字列を与えてください。

dragstarsp
質問者

補足

ご回答ありがとうございます。 すいませんが「UTF8への変換」に関する知識がありません。もう少し詳しくお教えいただけますでしょうか。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

$string="テスト"; $string=~s/(\W)/sprintf("%%%02X",unpack("C",$1))/eg; print $string; とか(UTF-8の場合質問文の例のようになります)

dragstarsp
質問者

補足

さっそくのご回答、ありがとうございました。 試したところ %83e%83X%83g となりました。 どこかにミスがありますでしょうか?

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

標準モジュールの URI::Escapeを使うのがお手軽でしょう。 use strict; use warnings; use URI::Escape; my $str = 'テスト'; print uri_escape($str, "\x00-\x1f\x7f-\xff"); これで %E3%83%86%E3%82%B9%E3%83%88 が出力されます(UTF-8使用の場合)。

参考URL:
http://homepage3.nifty.com/hippo2000/perltips/URI/Escape.html

関連するQ&A