Punycode変換とは
JPRSやJPNICに詳しく記載されていますが、簡単に言うとascii以外の文字もDNSで扱えるようにする仕組みのことで、これにより日本語ドメインなんかも使えるっていうことなんですね。
ブラウザによって異なる挙動
この仕組みのせいで
inputタグでtypeをemailにした場合、ブラウザによって取得できる値が異なってしまうので注意が必要です。
IEやFirefoxは入力した値がそのまま取れますが、chromeはドメインがPunycode変換された値になってしまいます。
実際にどのように変換されるか、簡単なサンプルを作成しましたので試してみてください。 コードはこのような↓感じです。
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" language="javascript">
function typeemail() {
confirm(document.getElementById('email').value);
}
function typetext() {
confirm(document.getElementById('text').value);
}
</script>
</head>
<body>
<div>
<input type="email" id="email">
<input type="button" onclick="typeemail()" value="ピュニコード変換あり">
</div>
<div>
<input type="text" id="text">
<input type="button" onclick="typetext()" value="ピュニコード変換なし">
</div>
</body>
</html>
酒井 修平