ご存知のように、当サイトは散財記録のためだけに存在します。したがって購入金額を記載するために 円記号(¥) が頻繁に登場します。
で、ここからが本題。うちの日記はブラウザを使って POST するお手軽システムなのですが、先日エラー低減のために HTML Tidy を通すようにしてみました。HTMLは手打ちなので、本文中には 円記号の変代わりに ¥ と書いてあるのですが、HTML Tidy を通すと
¥ が ¥ に変換される
のです。いやはやこれにはびっくりです。でもこんなことをされると、言語やフォントが変わると困ったことになるんじゃないの? と思ったのでちょっと調べてみました。
[yen.php]<?php[出力結果(イメージ)]
$html=<<<EOF
¥ ... HTMLで&yenと記述<br />
\ ... 直接キーボードからタイプ
EOF;
$config = array(
'char-encoding' => 'utf8',
'show-body-only' => true,
'output-xhtml' => true );
$tidy = new tidy;
$tidy->parseString($html,$config,'utf8');
$tidy->cleanRepair();
echo $tidy;
?>
¥ ... HTMLで&yenと記述<br />[ php yen.php | hd の出力 ]
¥ ... 直接キーボードからタイプ
00000000 c2 a5 20 2e 2e 2e 20 48 54 4d 4c e3 81 a7 26 61 |.. ... HTML...&a|
00000010 6d 70 3b 79 65 6e e3 81 a8 e8 a8 98 e8 bf b0 3c |mp;yen.........<|
00000020 62 72 20 2f 3e 0a 5c 20 2e 2e 2e 20 e7 9b b4 e6 |br />.\ ... ....|
00000030 8e a5 e3 82 ad e3 83 bc e3 83 9c e3 83 bc e3 83 |................|
00000040 89 e3 81 8b e3 82 89 e3 82 bf e3 82 a4 e3 83 97 |................|
00000050
ターミナル上はおんなじように表示されているのですが、コードは別物として取り扱われているのですな。うちのシステムはたまたま大改築の結果データベースから入出力に至るまで UTF-8 で統一されたので、ちゃんと区別できてるのなら勝手に変換してくれても特に実害はなさそうです。
余談ですが、円マークは ¥ と打てば出すことができますが、逆にバックスラッシュを出そうとしてもうまい方法が無いのですな。Mac だと option + \ で入力できますが、この文字はWindowsでは化けることもあるみたいだし。
さらに余談ですが、option + shift + k で 林檎マークが出るんですね。これは知らなかった。でも使うケースが思い浮かばない(笑)。