【php】髙(はしごだか)が文字化けする!(その2)
問題
「はしご高」が普通の高になってもいいから、読める字で文字コード変換してくれないかのう…?
→ ?
答え
iconv関数なら、字形が変わってしまうが、化けない似た文字に変えてくれる(髙が高になる)。
iconv('sjis-win', 'EUC-JP//TRANSLIT', $str);
第2引数 out_charset
出力文字セット。
文字列 //TRANSLIT を out_charset に追加すると、翻字機能が有効になります。これは、指定された文字集合で 表せない文字を、見た目の似ている別の文字に置き換える機能です。 文字列 //IGNORE を追加すると、指定された文字集合で 表せない文字は黙って切り捨てられます。 それ以外の場合は、str の中に変換できない文字が 出現した時点で変換が打ち切られ、E_NOTICE が発生します。
IBM拡張文字は、なかなかいい具合に扱ってくれるphpの関数、ライブラリがないみたいです。
mb_関数でもiconv関数でもだめ。
IBM拡張文字を含む形のEUCとしてはCP51932という文字コードがあって、EUC-JPやEUCJP-WINとも範囲が違うのですが、CP51932はphpで扱える機能がなさそうです。
IBM拡張文字
纊 褜 鍈 銈 蓜 俉 炻 昱 棈 鋹 曻 彅 丨 仡 伃 伹 佖 侒 侊 侚 侔 俍 偀 倢 俿 倞 偆 偰 僴 僘 兊 兤 冝 冾 凬 刕 劜 劦 勀 勛 匀 匇 厓 厲 叝 﨎 咜 咊 咩 哿 喆 坙 坥 垬 埈 埇 塚 增 墲 夋 奓 奛 奝 奣 妤 妺 孖 寀 甯 寘 岦 岺 峵 崧 嵓 﨑 嵂 嵭 嶸 嶹 巐 弡 弴 彧 恝 悅 悊 惞 惕 愠 惲 愑 愷 愰 憘 戓 抦 揵 擎 敎 昀 昕 昻 昉 昮 昞 昤 晥 晗 晙 晴 晳 暲 暿 曺 朎 朗 杦 枻 桒 柀 栁 桄 棏 﨓 楨 槢 樰 橫 橆 橳 橾 櫢 櫤 毖 氿 汜 沆 汯 泚 浯 涖 涬 淏 淸 淲 淼 渹 湜 渧 渼 溿 澈 澵 瀇 瀨 炅 炫 焏 焄 煜 煆 煇 凞 燁 燾 犱 犾 猤 猪 獷 玽 珉 珖 珣 珒 琇 珵 琦 琪 琩 璉 璟 甁 畯 皂 皜 皞 皛 皦 益 睆 劯 砡 硎 礰 礼 神 祥 禔 福 禛 竑 竧 靖 竫 箞 精 絈 綠 緖 繒 罇 羡 羽 茁 荢 荿 菇 菶 葈 蒴 蕓 蕫 﨟 薰 蘒 﨡 蠇 裵 訒 訷 詹 誧 誾 諟 諸 譿 賰 賴 贒 赶 﨣 軏 﨤 逸 遧 郞 都 鄕 鄧 釞 釭 釮 釤 釥 鈆 鈐 鈊 鈺 鉀 鈼 鉎 鉙 鉑 銧 鉷 鉸 鋧 鋗 鋙 鋐 﨧 鋕 鋠 鋓 錥 錡 鋻 鋿 錝 錂 鍰 鍗 鎤 鏆 鏞 鏸 鐱 鑅 鑈 閒 隆 隯 霳 霻 靃 靍 靏 靑 靕 顗 顥 飯 飼 餧 館 髙 髜 魵 魲 鮏 鮱 鮻 鰀 鵰 鵫 鶴 鸙 黑 ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ¬ ¦ ' "
画像にしたもの。
別解
iconvにパッチを当てると、CP51932が扱えるようになるらしい。
そうしたら、phpのiconv関数で CP51932が指定できるようになるかもしれない。
(未確認)
コメント