CakePHP 1.2.18
携帯の絵文字変換のコンポーネント、ヘルパーで「Ktai Library for CakePHP1.2」を使っていました。
サーバー移転をしたときに動作しなくなったので、その修正記録
Ktai Libraryのバージョンは0.2.0
(2017/11時点の最新版は0.4.2です。)
auでの絵文字変換がうまくいかない。
バージョンアップも考えたが、色々変更点があって修正対応に時間がかかりそうだったため
0.2.0を修正することにした。
処理の流れとしては下記のような感じ
1.docomoの絵文字を退避
2.文字コード変換
3.docomoの絵文字をauのバイナリ絵文字へ変換
文字コードの変換はうまくいっているが絵文字でNGで文字化け
PHPの文字コード設定は下記
ソースはUTF-8
表示はSJIS
vendors/ecw/lib3gk.php
ソースを追ってみる。
755行目あたり
1 2 3 4 5 6 7 8 9 |
if($output_encoding == KTAI_ENCODING_UTF8){ if($carrier == KTAI_CARRIER_KDDI && $binary){ $oekey = 2; }else{ $oekey = 1; } }else{ $oekey = 0; } |
出力がUTF-8、KDDIなら処理になっている。
こちら側の出力はSJIS
フィーチャーフォンはUTF-8表示は一部端末のみ
ということでこちらを修正(2箇所)
1 2 3 4 5 6 7 8 9 10 11 |
# if($output_encoding == KTAI_ENCODING_UTF8){ if($output_encoding == KTAI_ENCODING_SJIS){ if($carrier == KTAI_CARRIER_KDDI && $binary){ $oekey = 2; }else{ # $oekey = 1; $oekey = 0; } }else{ $oekey = 0; } |
これで絵文字も表示されるようになった。