スレッド表示 | フラット表示〕 全トピック 920 件中 416 番目 次≫ ≪前

mb_convert_encoding

created: 2005-07-11 15:42 | modified: 2005-07-12 17:17 | reply: 2

[2358] mb_convert_encoding

user: ばぶりいすらいむ | created: 2005-07-11 15:42
ばぶりいすらいむと申します。

mb_convert_encodingの動作で悩んでいます。

具体的には・・・
mb_internal_encoding("SJIS");
$a = "章";
$b = mb_convert_encoding($a, "SJIS", "auto");
print($b);
で、なぜか何も出力されません(単に$aをprintすると正しく"章"が出力されます)。

サーバ環境は・・・
Red Hat Linux release 9 (Shrike)
Apache/2.0.40 (Red Hat Linux)
PHP 4.3.3
です。

php.iniのmbstring 関連の設定は・・・
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
mbstring.http_output = EUC-JP
;mbstring.encoding_translation = Off
;mbstring.detect_order = auto
;mbstring.substitute_character = none;
;mbstring.func_overload = 0
です。

http://www.gmfactory.jp/blog/archives/2004/08/itmb_convert_en.htmに類似例がありましたが、やはりこのあたりが原因なのでしょうか?

とりあえず、mb_convert_encodingを動作させないことで回避していますが、解決方法等ご存じの方がおられましたらご教示ください。

よろしくお願いします。
reply: 2361 返信 編集 削除

[2361] 文字エンコーディング検出の失敗

user: ゆうじ | created: 2005-07-11 23:37
こんばんわ。

変換元のエンコード検出に失敗してるんです。試しに
echo mb_detect_encoding($a);
とすると、'EUC-JP' が返ってくると思います。
こうしたエンコードを判別できない文字は数多く存在します。

内部エンコーディングを 'SJIS'
出力エンコーディングを 'SJIS' とするなら、
出力時の mb_convert_encoding は必要ないと思います。

もし、$a = "章" のような文字列定数でなく
$a がフォームから渡された文字ならば、
フォーム埋め込んだ別の文字列で文字コード判別して
入力時に内部エンコードに変換してはいかがでしょう。
Parent: 2358  reply: 2363 返信 編集 削除

[2363] ありがとうございます

user: ばぶりいすらいむ | created: 2005-07-12 17:17
早速のレスありがとうございます。
大変勉強になりました。
当面、mb_convert_encodingは使用せずに様子を見たいと思います。
Parent: 2361  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 416 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑