UTC-8→SJISで文字化け
こんにちわ!宜しくお願い致します。
現在、オープンソースのアンケートシステム「limesurvey」におきまして、文字化けが起きており困っております。
LimeSurveyバージョン 1.90+ Build 9046
ほとんどのところは、きちんと日本語表示されるのですが、グラフ内(pchart)の文字が文字化けします。
いろいろネットで調べて、imagettftextが原因と分かりました。
「JIS-mapped Japanese Font Support」の設定値がTRUEの場合、GDライブラリは渡された文字列をUTF-8ではなく、Shift_JISとして解釈するということが分かり、mb_convert_encoding関数であらかじめShift_JISに文字コード変換してから、imagettftext関数に渡したところ基本的には、文字化けが解消しました。
以下が、そのコードです。
$Value2 = mb_convert_encoding($Value2,"SJIS ","UTF-8");
しかしながら、「(1)(2)(3)」(←まる1、まる2、まる3)などの機種依存文字がどうしても「?」に変換されてしまいます。
Shift_JISには、「(1)(2)(3)」などの機種依存文字が無いので仕方がないのですが、何とか良い方法が無いでしょうか?
ちなみにネットで調べたところ、「SJIS」ではなくて、「SJIS-win」で変換すれば文字化けが起こらないと分かりましたが、今度は、imagettftextでエラーが出てしまいます。
下記のコードはエラーになります。
$Value2 = mb_convert_encoding($Value2,"SJIS-win ","UTF-8");
「JIS-mapped Japanese Font Support」の設定値がTRUEの場合でも、GDライブラリは渡された文字列をUTF-8として強制的に解釈させる方法など無いのでしょうか?その他何か良い方法があればお教え下さい。
以上、宜しくお願い致します。
お礼
どうもありがとうございます。 教えていただいた記事を見てみると、JIS X 0208 なんだけど、変換が発生しないから 13区のNEC特殊文字や89~92区のNEC選定IBM拡張文字、115~119区IBM拡張文字などもそのままのコード位置を記憶できる、ということかもしれないですね。