PHPブログラムで文字列の文字コード変換を行う時に文字列の中に機種依存文字が含まれていても文字化けしない方法があるのか知りたいです。
例えば文字列の中に①という機種依存文字が含まれている場合、SJIS→UTF-8であれば
mb_convert_encoding('文字列', 'utf-8', 'sjis-win');
で文字化けせず変換できます。
逆にUTF-8→SJISの時
mb_convert_encoding('文字列', 'sjis-win', 'utf-8');
としても「?」となってしまいます。
UTF-8→SJISで文字化けせずに変換する方法はないのでしょうか?
「①」は shift_jis にあるので、それで文字化けするのは変です。
本来のシフトJISにはないです(WindowsあるいはMac OS独自の拡張領域にはあります)>①

①と➀で後者が文字化ける
そうでしたっけ?
別のコードが割り当てられるなら Mac で文字化けしてもおかしくないですね。
回答いただきありがとうございます。
①は例に出していただけで機種依存文字なら同じ挙動になると思っていました。
文字化けするのはこちらの機種依存文字でした。
????
????はSJIS-winに存在しません。全く話が違います。
どこまで本気で対応するかですね。諦めて済むのなら諦めるのが一番簡単だし、そうでなければ外字領域のコードやエスケープ文字列に置き換え、表示側でそれに画像などで対応するという方法もあります。

回答3件
あなたの回答
tips
プレビュー