iモードやezwebの絵文字を壊さずにSJISからEUC-JPに変換する方法

PHP, MySQL5, 絵文字

10:16:41, by admin Email , 68 words, 14356 views   Japanese (JP) del.icio.us

発想の転換。

(ノ・・)ン。。。。。。(((●コロコロッ

以前の記事
docomoやauの絵文字の抽出をPHPで最も簡単にする方法

で絵文字を簡単に抽出する方法を書いた。
この方法とは完全に方向性が異なるので、
使い分ける感じで。


ケータイサイトを作る時に、
顧客には3キャリ絵文字対応するかどうかを聞くわけだが、
それが対応しなくて良い場合もある。
そんな時は絵文字は全く放置状態にしたい。
だからといってソースコードやデータベースをShift-JISにするなどありえない。
何らかの形でEUC-JPやUTF-8に変換しなければならない。
ただ、mb_convert_encodingを使うと、
絵文字が崩壊してしまう。
前回の記事ではそれを補間する方法だったわけだが、
今回は違う。


完全な可逆変換



使用するのはなんとmb_convert_encodingである。

[More:]


通常mb_convert_encodingを使って記述する場合はこんな感じだろうか?

$str = mb_convert_encoding( $str, "EUC-JP", "SJIS" );


さて、この"SJIS"というものに疑問を感じたことはあるだろうか?
いや、これが何を表しているかと言うことを考えたことはあるだろうか?
マルチバイト関数のマニュアルにはちゃんと記載されている。
これらは”文字コードの種類”を表している。

(゜Д゜)ハァ!?ソンナノアタリマエジャン!!

いや、厳密な意味の文字コードの種類。
正確には文字コードマップとでもいうのだろうか。
IANA(Internet Assigned Numbers Authority)に登録されているShift_JISを"SJIS"という名前で利用している。

mb_convert_encodingで利用できるEUC-JPには2種類あって、
  • EUC-JP
  • eucJP-win

がある。

同様にShift-JISも複数あって、
  • SJIS
  • SJIS-win

~winとついているものは、
正確にはcp932。
winの名前から察しがつくかもしれないが、
Windowsで用いられている文字コードである。
cp932は従来のShift-JISに加え以下のものが追加されている。
  • NEC 特殊文字(キログラム記号など)
  • NEC選定IBM特殊文字(第3水準漢字など)
  • IBM特殊文字(ナンバー、株記号など)

  • そしてこの~winとついた文字コードを使用すると、
    絵文字が破壊されずにEUC-JPに変換できる。

    $str = mb_convert_encoding( $str, "eucJP-win", "SJIS-win" );


    こうすると絵文字も含めてEUC-JPに変換され、

    $str = mb_convert_encoding( $str, "SJIS-win", "eucJP-win" );


    こうすることでちゃんと絵文字が復元できる。




    これらのデータをデータベースに格納する時は、
    MySQL5などのようにデータベースがCP932に対応している必要がある。
    利用するときは注意しよう。



    Trackback address for this post:

    http://hain.jp/htsrv/trackback.php/68

    Comments, Trackbacks:

    No Comments/Trackbacks for this post yet...

    Leave a comment:

    Your email address will not be displayed on this site.
    Your URL will be displayed.

    Allowed XHTML tags: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
    (Line breaks become <br />)
    (Set cookies for name, email and url)
    (Allow users to contact you through a message form (your email will NOT be displayed.))
    This is a captcha-picture. It is used to prevent mass-access by robots.

    Please enter the characters from the image above. (case insensitive)

    powered by b2evolution

    shinobi

    Neighbors
    Relative
    Favorites
    PR

    極論istの技術屋を始めて早幾年。 流れの速い業界の波にもまれながらも精一杯生きている様をとくとごらんあれ。

    Archives
    スポンサー

    Latest bookmark
    Search

    Categories

    Who's Online?
    Misc
    Syndicate this blog XML

    Valid XHTML 1.0! Valid CSS! Valid RSS 2.0! Valid Atom 1.0!