アプリ版:「スタンプのみでお礼する」機能のリリースについて

セッションに入った文字が文字化けします。
それを、サーバー側に問い合わせたところ、
「phpの場合は、内部エンコーディングがUTF-8になっているので、明示的指定がなければ文字化けすることはあります。
エンコーディングを指定してください。」

という返答がきました。

エンコーディングとはどのように指定すれば良いのでしょうか?
.htaccessかと思ったのですが、使えないみたいです。

A 回答 (4件)

がるです。


> 入室した時にセッションに入れる前にEUCに変換し、
> ファイルに書き込む時や、ログ行数を出力する時にsjisに変換するということなのでしょうか?
概ねこんな感じかと。
ただ、表示の絡まない「ファイル出力」に関しては「EUCのまま」とするのもアリです。
ようは、そういった「文字コードがどうなっているのか」をきちんと把握しきること(設計すること)が肝要だと思います。
    • good
    • 0

まず自動で変換されるかどうかをphpinfoで確認してください。


たぶん自動では変換されないpass設定です。

自動で変換したい場合は.htaccessで設定してください。
(入力自動の例)
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.detect_order = auto
mbstring.internal_encoding = eucJP
(出力自動の例)スクリプト内でも可
mbstring.http_output = SJIS-win
output_buffering = On
output_handler = mb_output_handler

スクリプト内で変換する場合は
mb_detect_encoding()
mb_convert_encoding()
mb_convert_variables()
等の関数を使えば処理できます。

出力は普通mb_output_handlerを使って自動変換すると思いますが。

参考URL:http://php.s3.to/man/ref.mbstring.html

この回答への補足

お返事送れてすみません。

mbstring.encoding_translation On/Off
なので、自動変換ではないと思います。
.htaccessのようにしてみたのですが、サーバーエラー500で
表示されなくなってしまいました。
エンコーディングがシフトJISなので、それで指定すれいばいいのかな?と思ったのですが、
指定できるのはMaster Value ではなく、Local Value なんですよね。

補足日時:2006/07/11 12:00
    • good
    • 0

 私は、macなのですが...



一番上のメニューバーに
” 表示 ” 
 が、あり、その表示の一番下に
” テキストエンコーディング ”
から、選択出来ます。

この回答への補足

ご回答有難う御座います。
それはDreamweaverのソフトでしょうか?
少し探してみます。

補足日時:2006/07/10 15:03
    • good
    • 0

がると申します。


暗黙的自動的な変換を期待するよりは、ご自身で明示的にエンコードタイプをそろえたほうがよろしいかと思います。
使うべき関数は
mb_convert_encoding
http://www.php.net/manual/ja/function.mb-convert …
で、タイミングとしては「データを取得した直後」にまず一回。必要に応じて「出力タイミングでもう一回」になります。
具体的には「データ取得時にEUCに変換」「出力タイミングでsjisに変換」というのが割合にパターンでしょうか?

なにか追加の質問などありましたらお気軽におっしゃってください。

この回答への補足

早速のご回答有難う御座います。

現在、チャットサイトを運営しているのですが、
入室した時の名前やログ行数、名前の色などをセッションで保持しています。
発言のときに、ファイルに名前や名前の色などが書き込まれるようにしています。

入室した時にセッションに入れる前にEUCに変換し、
ファイルに書き込む時や、ログ行数を出力する時にsjisに変換するということなのでしょうか?

補足日時:2006/07/10 15:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!