「mb_convert_encoding」
普段は特に用のないものですが、
CSVを出力する時などには重宝します。
大抵の場合、出力するデータを全て用意し、
出力する直前に一気にコンバートするものだと思います。
しかし、コンバート後に加工が必要な場合、
どのように対応しているでしょうか?
例えば、ヤマトの送り状をCSV出力しようとした時、
文字制限に引っかかったら分割・切り捨てする必要があります。
その際の文字制限はバイト数です。
その為、一旦SJISにコンバートしてから加工しなければなりません。
一度SJISにしたものを再度UTF8にするのは無駄な処理だと考えれば、
他の要素も個別でコンバートする必要があります。
個別でもちゃんとコンバートできていれば問題はありませんが、
取りこぼしが発生するとたまりません。
「mb_detect_encoding」や「mb_check_encoding」等、
文字コードをチェックする処理もある為、
チェックした上で必要なものだけコンバートするという予防法も考えられます。
が、このチェックは完璧ではないようで、
安心して使う事ができません。
チェックに失敗し多重にコンバートすると文字化けを起こします。
多重コンバートをしない為には、
加工後に再度文字コードを戻すか、
間違いなく全ての要素にコンバートを行うように、
後から見て分かりやすくプログラムする必要があります。
迷走したくない方は、
「mb_convert_encoding」のご利用は計画的に行いましょう。