[PHP-users 13597] [長文] ezweb と mbstring.http_output=SJIS

Takashi Seki php-users@php.gr.jp
Wed, 26 Feb 2003 16:40:50 +0900


[長文で失礼します。]

こんにちは、関隆です。

	PHP Version 4.2.2
	Apache/1.3.26

php.ini
	[PHP]
	output_buffering = On
	output_handler = mb_output_handler
	
	[mbstring]
	mbstring.internal_encoding = EUC-JP
	mbstring.http_input = auto
	mbstring.http_output = SJIS
	mbstring.detect_order = auto
	mbstring.substitute_character = none;

ソースはEUCで記述

という環境で携帯3キャリア対応のWEBアプリを作成しているのですが、
文字コードの問題で、つまづいております。

以下のコードを実行すると EZWEB のみ文字化けします。
PCでアクセスすると、どうもEUCのまま送信されているようなので、
	header("Content-Type: text/x-hdml; charset=EUC-JP");
とすると、うまくいきます。

どなたか、ご教授戴けると幸いです。
どうぞよろしくお願い致します。

----- ソースココから
<?php
	//----------------------------------
	// HTTPヘッダのユーザエージェントによってターミナルタイプを決定
	if ( ereg("^DoCoMo/", $_SERVER["HTTP_USER_AGENT"]) )
	{
		$terminal_type = IMODE;
	}
	else if ( ereg("^J-PHONE/", $_SERVER["HTTP_USER_AGENT"]) )
	{
		$terminal_type = JPHONE;
	}
	else if ( ereg("UP\.Browser/", $_SERVER["HTTP_USER_AGENT"]) )
	{
		$terminal_type = EZWEB;
	}
	else
	{
		$terminal_type = EZWEB;
	}

	switch ($terminal_type) {
		case IMODE:
			$head =	'<html>'."\n".
				'<head>'."\n".
				'	<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">'."\n".
				'	<title>'.$title.'</title>'."\n".
				'</head>'."\n".
				'<body bgcolor="#FFFFFF" text="#000000" link="#0000FF">'."\n";
			$foot =	'</body>'."\n".
				'</html>'."\n";
			break;
			
		case JPHONE:
			$head =	'<html>'."\n".
				'<head>'."\n".
				'	<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">'."\n".
				'	<title>'.$title.'</title>'."\n".
				'</head>'."\n".
				'<body>'."\n";
			$foot =	'</body>'."\n".
				'</html>'."\n";
			break;
			
		case EZWEB:
			header("Content-Type: text/x-hdml; charset=Shift_JIS");		// NG
//			header("Content-Type: text/x-hdml; charset=EUC-JP");		// OK
			$head =	'<HDML VERSION="3.0" PUBLIC="TRUE" MARKABLE="TRUE" TTL="0">'."\n".
				'<ACTION LABEL="" TYPE="ACCEPT" TASK="NOOP">'."\n".
				'<DISPLAY NAME="presents" TITLE="'.$title.'">'."\n";
			$foot = '</DISPLAY>'."\n".
				'</HDML>'."\n";
			break;
	}

	print $head."あいうえお、アイウエオ、愛飢え男".$foot;
?>
----- ソースココまで

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
      関   隆 (SEKI, Takashi)
---------------------------------------
[E-mail] hawk.seki@nifty.com
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=