Posts Tagged 文字コード

headerパワー恐るべし。

相変わらず日本語には苦労しておりますが、うちの会社のサーバーはPHPの処理がすべてEUCに統一されています。

まぁ、EUCで開発を行うときは何一つ苦労しないのだけども、どうしても違う文字コードじゃないといけない場合があります(うっかり違う文字コードで開発しちゃったとかなんだとか)

そんなときは.htaccessさんの力に頼るのですが、対外は.htaccessさんの力があれば事足ります。

がしかし、IE6だけは.htaccessさんのちからもなぜか及ばず、PHPファイルが、EUCではき出されてしまいます。 (CharsetがEUCって書いていなくて、違うものになっていても)

そんなときはPHPのコードの初っぱなに

header(‘Content-Type: text/html; charset=HOGEHOGE);

と書いてあげるとうまくいきました。

頼むよIE。。
Yell

Tags: , ,

PHPで日本語を使うのだ

新しいサーバーをいじるときに必ずやらなければ行けないこと。

それは日本語、マルチバイトテキストの設定なのだ。

そうしないと、PHPでメールを送るときにmb_encoding_mimeheaderを使ってメールのタイトルを変換したとしても、文字化けしてしまうらしい。

PHPのmb_encode_mimeheaderは事前にmb_internal_encodingが必要

ということらしい。

php.iniで設定をしても、ソース内で処理をしても良いのかな?このサイトのソースはPHP5らしいので、PHP4の人は違うかもしれませんが、いろいろと不都合が起こらないよう環境を統一しておくためにphp.iniできちんとmbの項目を設定しておきましょう。

ちなみに、設定した値は

output_buffering         = Off
magic_quotes_gpc = Off
default_charset          = EUC-JP

mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input  = auto
mbstring.http_output = EUC-JP
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none

こんな感じですかね。

そんなこんなで仕事が滞っています。。。

Tags: , ,

internal_encodingの謎

長年の謎であった、文字コードに解決の糸口が。。。?

どうやら、mbstring.internal_encodingとは、PHPが処理をする際の文字コードのようで、たとえば、formの表示する部分をShift_jisで作ってしまった場合も

  • form.html  -  Shift_jis
  • confirm.php – EUC-jp
  • send.php – EUC-jp

というように受取側が、EUCであれば問題がないようだ。

但し、confirm.phpにおいて、表示する際は、charsetはShift_jisでありながら、ファイル自体はEUC-jpで保存しないといけないので要注意。

とりあえず、今回はこれでうまく行った感じだけど、どうなることやら。。。(というか、うちの会社のサーバーのみかもしれないし。。。)

Read the rest of this entry »

Tags: , ,