[Tep-j-general] Re: sjisでの設置方法

Back to archive index

hamada bungu****@leo*****
2004年 11月 15日 (月) 11:40:19 JST


こんにちわ。

On Mon, 15 Nov 2004 10:42:42 +0900
yukai****@u01***** wrote:

> 現在、ページのエンコードをShiftJISで運用したく
> 試行錯誤しておりましたが、
> 一部文字化けが発生します。

「出力をsjis化したい」だけならmbstring.encoding_translationを有効にして
mbstring.http_outputをSJISにすればいいのでは??

(application_top.php辺りにmb_http_output('SJIS'); って手もアリかな?)

まぁ「スクリプトをSJIS化したい」場合はコレじゃ駄目ですけど。

> 	mbstring.internal_encoding = SJIS

ありゃ?!

http://de3.php.net/manual/ja/ref.mbstring.php

> PHPの内部エンコーディングとして使用可能な文字エンコーディングと 使用できない文字エンコーディングの例を以下に示します。 
> 
> PHPで動作する文字エンコーディング: 
> ISO-8859-*, EUC-JP, UTF-8
> 
> PHPで動作しない文字エンコーディング:
> JIS, SJIS

なんで、たしか内部エンコーディングはEUC(FedoraならUTF8か?)で、出力の
みSJISにすべきだったように思います。

> 注意: SJIS は、読者がパーサ/コンパイラ、文字エンコーディングと文字エン 
> コーディングの問題点について精通していない限り内部エンコーディングとし
> て使用するべきではありません。 

だそーです。

詳しくは上記url等のマニュアルをご参照ください。

> 例 3. SJISユーザ用のphp.iniの設定
> 
> ;; 出力のバッファリングを有効に
> output_buffering     = On
> 
> ;; 出力の変換を有効にするために mb_output_handler を設定
> output_handler       = mb_output_handler
> 
> ;; HTTPヘッダ charset を設定
> default_charset      = Shift_JIS
> 
> ;; デフォルトの言語を日本語に設定
> mbstring.language = Japanese
> 
> ;; HTTP 入力変換を有効にする
> mbstring.encoding_translation = On
> 
> ;; HTTP入力エンコーディング変換をautoに設定
> mbstring.http_input  = auto 
> 
> ;; SJISに変換
> mbstring.http_output = SJIS    
> 
> ;; 内部エンコーディングをEUC-JPに設定
> mbstring.internal_encoding = EUC-JP    
> 
> ;; 無効な文字を出力しない
> mbstring.substitute_character = none

↑コレとか見ると、PHP側はdefault_charsetとmbstring.http_outputの設定だけ
で対応してるように見えます。(自分でやったことないので詳細は不明)

> ・mysql		Ver 11.18 Distrib 3.23.58, for redhat-linux-gnu (i386)
> 	my.cnfのコード設定
> 	default-character-set=sjis
> 	default-character-set=sjis
> 	default-character-set=sjis

これは[client][mysql][mysqld]の各セクションに書いてるって意味の3連打な
んでしょか?

「表」化けは「MySQLで文字コードを設定していない」場合の症状として良く聞
くハナシですが、文字コード自体は設定されてるってことなんですね?

my.cnfの[mysqld]セクションに(ふつーセットで設定する)

language=/usr/share/mysql/japanese/

みたいな指定は入ってるんでしょか?

はまだ






Tep-j-general メーリングリストの案内
Back to archive index