ブラウザのアドレスに直接入力すると全角がSJISとしてurlencodeされてしまうので(WinVista+Firefox)自分用スクリプトを書いてみた。今まではbinにurlencode.phpというシェル用スクリプトを置いて、変換したのをブラウザにコピペしていた。
<?php
$_encodes = array('UTF-8', 'EUC-JP', 'Shift_JIS');
if (isset($_GET['url'])) {
$url = urldecode($_GET['url']);
$p = @parse_url($url);
if ($p === false) {
die("parse failed.");
}
$api = $p['scheme'] . '://' . $p['host'] . (isset($p['port']) ? ':' . $p['port'] : '') . $p['path'];
if (isset($p['query'])) {
parse_str($p['query'], $param);
$api .= '?';
$encode = in_array($_GET['encode'], $_encodes) ? $_GET['encode'] : 'UTF-8';
foreach ($param as $key => $value) {
$api .= $key . '=' . urlencode(mb_convert_encoding($value, $encode, 'UTF-8')) . '&';
}
}
header("Location: $api");
exit;
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>api test</title>
</head>
<body>
<div>api url, oe</div>
<form action="" method="GET" target="_blank">
<input type="text" name="url" style="width: 60em;" />
<select name="encode">
<?php foreach ($_encodes as $e) : ?>
<option value="<?=$e?>" /><?=$e?>
<?php endforeach; ?>
</select>
<input type="submit" value="submit" />
</form>
<div style="text-align: right; font-size: 70%; color: #999;">developed by <a href="http://blog.zuzara.com/">funaki</a></div>
</body>
</html>