mb_convert_encodingで変換できない文字の対処

まっちー

まっちー

EUC-JPで書かれている文字列をUTF-8に直したいと思ったら、この記事のタイトルにも書いてあるmb_convert_encodingを使えばエンコードできる。

ただし、ちょっと気をつけておかなければならないのは、中には変換できない文字もあるということ。

たとえば、①とかがそう。これをEUC-JPからUTF-8に変換すると、?になってしまう。

この手の文字が文字列に入っている場合は、↓こんな感じにすれば変換は可能っぽい。

$str = 'ムダヅモなき改革①';

$str = mb_convert_encoding($str, 'EUCJP-win', 'EUC-JP');

$str = mb_convert_encoding($str, 'UTF-8', 'EUCJP-win');

いったんEUCJP-winに変換してからUTF-8に変換するわけですな。

とりあえず僕はこんな感じで対処してますけど、しかしソースとしてはちょっとかっこわるいような・・・?

何かもっとうまい(かっこいい)方法はないものでしょうか・・・何か1発でできるような。

あと、確認はしてないけど、この変換だとMacで見た場合はどうなるのかしら。

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

プログラマのまっちーです。酒が大好きです。ある一定量のお酒を飲むと壊れたレディオモードに入り、同じことを繰り返す癖があります。宜しくお願いいたします。

このメンバーの記事をもっと読む
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL