PHPでSJISの波ダッシュをUTF-8に変換すると全角チルダに変換される問題

まずはこちらのコードを御覧いただきたい。

5行目のechoと8行目のechoは同じものを出力する。
そう信じてました、、、ついさっきまで。

だって、UTF-8にしたものをS-JISにしてもう1回UTF-8に戻しただけじゃないですか!

しかしながら出力はこうなります。

ちょっとまって、なんで行って戻ってしただけで、文字が変わってるんですか!?

波ダッシュ「これってもしかして…」
全角チルダ「私たち、身体が…」
「「入れ替わってる〜!?」」
ちょっとふざけてる場合じゃないよ。

ちなみにこの現状は、SJIS→UTF-8の変換時に発生しているみたいなので、dbがSJISでフロントがUTF-8の場合には要注意でございます。

SNSでシェア