- ベストアンサー
漢字をエンコードする方法
Googleで「テスト」と検索をした時に q=%E3%83%86%E3%82%B9%E3%83%88 と、エンコードされます。 この方法をお教えいただけますでしょうか。
- みんなの回答 (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)
モジュールを使うのはお好みに合いませんか。 > %83e%83X%83g テストという文字列を与えてこの出力になったのならShiftJISで文字列を渡しています。 質問にあるような結果が欲しいのならUTF-8に変換した文字列を与えてください。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
$string="テスト"; $string=~s/(\W)/sprintf("%%%02X",unpack("C",$1))/eg; print $string; とか(UTF-8の場合質問文の例のようになります)
補足
さっそくのご回答、ありがとうございました。 試したところ %83e%83X%83g となりました。 どこかにミスがありますでしょうか?
- sakusaker7
- ベストアンサー率62% (800/1280)
標準モジュールの 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使用の場合)。
補足
ご回答ありがとうございます。 すいませんが「UTF8への変換」に関する知識がありません。もう少し詳しくお教えいただけますでしょうか。