久しぶりの記事更新。
UTF-8,Shift_JIS,EUC-JPで次のコードを実行したら、それぞれ結果が異なった。
<!DOCTYPE html>
<html>
<head>
<meta charset="それぞれのcharset">
<title>HTMLエンティティ</title>
</head>
<body>
<form method="post">
<?php
$val = isset($_POST['val']) ? $_POST['val'] : '';
?>
<p>入力値:<input type="text" name="val"
value="<?=htmlentities($val, ENT_QUOTES, 'それぞれのcharset', false)?>" /></p>
<p><input type="submit" value="GO" /></p>
<?php
echo "ポスト:{$val}"; // XSS脆弱性があるので注意。
?>
</body>
</html>
で、それぞれのエンコードの結果はこれ。
■chrome
・UTF-8
入力値:© // ソースを表示すると、©
ポスト:© // ソースを表示すると、©
・Shift_JIS
入力値:© // ソースを表示すると、©
ポスト:© // ソースを表示すると、©
・EUC-JP
入力値:© // ソースを表示すると、©
ポスト:© // ソースを表示すると、©
■IE
・UTF-8
入力値:© // ソースを表示すると、©
ポスト:© // ソースを表示すると、©
・Shift_JIS
入力値:© // ソースを表示すると、©
ポスト:© // ソースを表示すると、©
・EUC-JP
入力値:© // ソースを表示すると、©
ポスト:© // ソースを表示すると、©
微妙に結果が番う。