人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

UTF-8の

【人力検索はてな】

という文字列を、

\'81\'79\'90\'6c\'97\'cd\'8c\'9f\'8d\'f5\'82\'cd\'82\'c4\'82\'c8\'81\'7a

というShift-JIS16進のコード列に変換する方法を教えてください。

以前も似たような質問(ただし今回とは逆方向の変換)をしてしまい、申し訳ございません。
http://q.hatena.ne.jp/1310909891

よろしくお願いいたします。

●質問者: lionfan
●カテゴリ:コンピュータ インターネット
✍キーワード:CD UTF-8 コード 人力検索はてな 文字列
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●70ポイント
<?php
$str = "人力検索はてな";
$str2 = str_replace('%', "\",urlencode($str)) ;
$str2 = mb_convert_encoding($str2, 'utf8', 'sjis') ;
echo $str2 ;
?>

◎質問者からの返答

id:taknt

早々のお返事ありがとうございます!!

試してみたのですが、

http://www.nurs.or.jp/~lionfan/change/hello.php

\'E4\'BA\'BA\'E5\'8A\'9B\'E6\'A4\'9C\'E7\'B4\'A2\'E3\'81\'AF\'E3\'81\'A6\'E3\'81\'AA

という出力結果になってしまいました。

hello.phpの中身は以下です。

<html>

<head>

<title>sample</title>

</head>

<body>

$str = "人力検索はてな";

$str2 = str_replace('%', "\\'",urlencode($str)) ;

$str2 = mb_convert_encoding($str2, 'utf8', 'sjis') ;

echo $str2 ;

?>


</body>

</html>


2 ● ぱこち
●150ポイント ベストアンサー

urlencode だと、文字の一部がエンコードする必要のない文字として解釈されてエンコードされない (例 : 【 (%81%79) の後ろ半分が %79 と変換されず y になる) ようなので、別の方法で変換しました。

もしかしたらもっとスマートな方法があったりするかもしれません。

<?php
$str = '【人力検索はてな】';
$str = mb_convert_encoding($str, 'SJIS', 'UTF-8');
$str = preg_replace('/[\S\s]/e', 'sprintf("\\\'%02x", ord("$0"))', $str);
echo $str;
?>
◎質問者からの返答

id:pacochi様、おみごと!! うまく行きました!! ありがとうございます!!

たいへんハッピーです。


3 ● km1981
●250ポイント

これでどうですか?

$str = "【人力検索はてな】";

$str1 = mb_convert_encoding($str, 'SJIS', 'utf-8');

$str2 = preg_replace("/[a-z]/e", 'sprintf("%%%02X", ord("$0"))', urlencode($str1)) ;

$str3 = preg_replace("/\%/", "\\'", $str2);

echo $str3;

?>

◎質問者からの返答

id:km1981

ありがとうございます。これも上手く行きました!!

いるかは1人にしか差し上げられないので、その分、ポイントを多めにいたします。

今回は本当にありがとうございました!!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ