SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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拡張文字

纊 褜 鍈 銈 蓜 俉 炻 昱 棈 鋹 曻 彅 丨 仡
伃 伹 佖 侒 侊 侚 侔 俍 偀 倢 俿 倞 偆 偰
僴 僘 兊 兤 冝 冾 凬 刕 劜 劦 勀 勛 匀 匇
厓 厲 叝 﨎 咜 咊 咩 哿 喆 坙 坥 垬 埈 埇
塚 增 墲 夋 奓 奛 奝 奣 妤 妺 孖 寀 甯 寘
岦 岺 峵 崧 嵓 﨑 嵂 嵭 嶸 嶹 巐 弡 弴 彧
恝 悅 悊 惞 惕 愠 惲 愑 愷 愰 憘 戓 抦 揵
擎 敎 昀 昕 昻 昉 昮 昞 昤 晥 晗 晙 晴 晳
暲 暿 曺 朎 朗 杦 枻 桒 柀 栁 桄 棏 﨓 楨
槢 樰 橫 橆 橳 橾 櫢 櫤 毖 氿 汜 沆 汯 泚
浯 涖 涬 淏 淸 淲 淼 渹 湜 渧 渼 溿 澈 澵
瀇 瀨 炅 炫 焏 焄 煜 煆 煇 凞 燁 燾 犱
犾 猤 猪 獷 玽 珉 珖 珣 珒 琇 珵 琦 琪 琩
璉 璟 甁 畯 皂 皜 皞 皛 皦 益 睆 劯 砡 硎
礰 礼 神 祥 禔 福 禛 竑 竧 靖 竫 箞 精 絈
綠 緖 繒 罇 羡 羽 茁 荢 荿 菇 菶 葈 蒴 蕓
蕫 﨟 薰 蘒 﨡 蠇 裵 訒 訷 詹 誧 誾 諟 諸
譿 賰 賴 贒 赶 﨣 軏 﨤 逸 遧 郞 都 鄕 鄧
釞 釭 釮 釤 釥 鈆 鈐 鈊 鈺 鉀 鈼 鉎 鉙 鉑
銧 鉷 鉸 鋧 鋗 鋙 鋐 﨧 鋕 鋠 鋓 錥 錡 鋻
鋿 錝 錂 鍰 鍗 鎤 鏆 鏞 鏸 鐱 鑅 鑈 閒 隆
隯 霳 霻 靃 靍 靏 靑 靕 顗 顥 飯 飼 餧 館
髙 髜 魵 魲 鮏 鮱 鮻 鰀 鵰 鵫 鶴 鸙 黑
ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ¬ ¦ ' "

画像にしたもの。

IBM拡張文字

別解

iconvにパッチを当てると、CP51932が扱えるようになるらしい。

そうしたら、phpのiconv関数で CP51932が指定できるようになるかもしれない。

(未確認)

関連するメモ

コメント