人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで、UTF-8で入力された文字列を調べて、EUCやSJISで表示可能なら、データ量削減の為に、そちらの文字コードに変換する処理を行いたいのですが、そのようなライブラリや、うまいやり方がありましたら教えてください。

●質問者: xxmasaxx
●カテゴリ:インターネット ウェブ制作
✍キーワード:EUC PHP SJIS UTF-8 うまい
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● nandedarou
●20ポイント

mb_detect_encoding ? 文字エンコーディングを検出する

http://jp2.php.net/manual/ja/function.mb-detect-encoding.php

mb_convert_encoding ? 文字エンコーディングを変換する

http://jp2.php.net/manual/ja/function.mb-convert-encoding.php

以上の関数でできると思います。

◎質問者からの返答

えーと、文字コードの変換方法は分かります。

知りたいことは、UTF-8の文字列を「解析」してEUCやSJISで代用可能か判別したいのです。


2 ● kurukuru-neko
●50ポイント ベストアンサー

文字コードの集合の大きさは

SJIS < EUC < UTF-8

おおよその表現可能文字

SJIS

ASCII

JIS X 0201

JIS X 0208

EUC

ASCII

JIS X 0201

JIS X 0208

JIS X 0212

JIS X 0213

UTF-8

ASCII

JIS X0208

JIS X0201

JIS X0208

JIS X0212

JIS X0213

Windows-31J

Unicode

となっています。

従って、必ず変換できる保障はありません。

単純に変換可能かどうかを調べるには

$enc1 = mb_convert_encoding($src,"EUC-JP","UT

F-8");

$enc2 = mb_convert_encoding($enc,"UTF-8","EUC-JP");

$enc3 = mb_convert_encoding($enc2,"EUC-JP","UTF-8");

3回変換処理を行い

$src と $enc2 が一致

$enc1 と $enc3 が一致

なら相互変換可能

$src と $enc2 が不一致

$enc1 と $enc3 が一致

なら変換により一部文字コードの置き換えか

変換不能文字に置き換えがされた事になります。

違う文字への置き換えを認めるなら

変換文字列をmb_substrで1文字づつ

取り出して、置き換えでない事を確認する。

mb_substitute_character

>EUCやSJISで表示可能なら

UNICODEをEUC,SJISに変換すると

漢字は、JIS X02??にの漢字コードの

単方向の変換されてしまいます。

http://ja.wikipedia.org/wiki/UTF-8

http://ja.wikipedia.org/wiki/EUC-JP

http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%95%E3%83%88%E7%AC%A...

◎質問者からの返答

mb_convert_encodingで変換後の結果と比較するのが一番てっとりばやそうですね。

回答有り難うございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ