php4.2 win ロリポップサーバーにて

インクルード関数を使います。
なぜか文字化けします。

外部から文字を読み込みます。

外部ファイル test.php
================
こんにちは
================

indexファイル
================
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>メール送信</title>
</head>
<body>
<?php
include("test.php")
<?>
</body>
<html>
================

①indexファイルの文字コードがEUCなら文字化けせずに読み込めました。何故でしょうか?
②indexファイルをシフトJISのままで、test.phpを読み込んで文字化けしないようにするにはどうすればいいですか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/05/11 17:43:38
  • 終了:2007/05/18 17:45:02

回答(6件)

id:gekikawa No.1

gekikawa回答回数110ベストアンサー獲得回数112007/05/11 18:15:37

ポイント19pt

ロリポップサーバーならばphpの文字コードの設定は.htaccessを使って行えます。

(又はスクリプト内部で行います。)

どのような.htaccessの内容かわからないと適切な回答がしにくいですよ。



想像になりますがなにも.htaccessを設定していないならば、

phpの文字コードがEUC-JPの設定になっているはずなので、

indexファイルがEUCで保存された場合に正しく動作するはずです。


またシフトJIS(SJIS)で作成されたいのならば、全てのファイルはSJIS保存で統一するのと、

文字コードの設定(.htaccessの設置)をしっかりと行う必要があります。

あとロリポサーバー特有の設定については

http://lolipoking.lolipop.jp/php/patio.cgi?

が詳しいです。

id:rrr3

ありがとうございます!!わかりやすいです!!

具体的にhtaccessの文字コードは

.htaccess 中身

====================

EUC-jp

====================

と書けばいいでしょうか?

すいませんおねがいします。

2007/05/11 18:42:10
id:Yota No.2

Yota回答回数453ベストアンサー獲得回数282007/05/11 18:33:32

ポイント19pt

1.サーバの設定でEUC-JPで吐き出すように設定されている。

2.呼び出される側のファイルの設定に

header ("Content-Type: text/html; charset=SJIS") ;

と書けば強制的にSJISになります。

どちらのファイルもSJISで保存してください。

http://www.php.net/manual/ja/function.header.php

id:rrr3

ありがとうございます!

1点確認です。

test.phpに下記をどう付け加えればいいですか?

===================

header ("Content-Type: text/html; charset=SJIS") ;

?>

こんにちは

===================

これだとできませんでした。

2007/05/11 18:40:04
id:Yota No.3

Yota回答回数453ベストアンサー獲得回数282007/05/11 18:48:07

ポイント18pt

このような感じで。

呼び出される方

<?php

header ("Content-Type: text/html; charset=SJIS") ;

echo'こんにちは。' ;

?>

呼び出す方

<?php

include("test.php") ;

?>

http://dummy.com/

id:rrr3

ありがとうございます!

上記をコピペして試しました。

ただ、だめみたいです。

test.phpとindex.phpの文字コードを確認する方法はありますでしょうか?

①どちらのファイルもSJISで保存しているかを確認します。

②他に確認すべき点はありますか??

2007/05/11 19:03:41
id:GEN111 No.4

GEN111回答回数472ベストアンサー獲得回数582007/05/11 19:12:41

ポイント18pt

test.php じゃなくて、index.php(?)のほうに、

<?php
header ("Content-Type: text/html; charset=SJIS") ;
?>
<html>
<header>

のように入れてみてください。

PHP: header - Manual

id:gekikawa No.5

gekikawa回答回数110ベストアンサー獲得回数112007/05/12 05:25:42

ポイント18pt

.htaccessでphpの設定を行う場合の注意

http://ml.php.gr.jp/pipermail/php-users/2001-November/003373.htm...

文字コードの設定

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


PHPで文字化けっていうのは、結構色々なパターンがあって、

1)出力形式をブラウザが正しく理解してくれない時

(2番さんが答えているような対策があります)

2)スクリプトの内容(日本語部分)を正しく読み取れていないとき

ファイルの保存形式と、PHPの設定(内部文字コード)が合っていない時

(今回こちらも関係がありそうです)

その他いろいろ


まずは

.htaccessを

----------------------------------------------

php_value output_handler mb_output_handler

php_value default_charset SJIS

php_value mbstring.language Japanese

php_flag mbstring.encoding_translation On

php_value mbstring.http_input auto

php_value mbstring.http_output SJIS

php_value mbstring.internal_encoding SJIS

php_value mbstring.substitute_character none

----------------------------------------------

と書いて、なるべく上のほうのディレクトリにおいて下さい。

.htaccess自体は、日本語を含まないので、保存するときに文字コードを

気にしないで大丈夫です。

あと内部コードがSJIS(PHPファイルをSJISで保存するということ)

というのは、場合によってそれが原因でスクリプトが思うように動かない

場合があることを覚えておいて下さい。(正規表現を使う時など)

id:soyuz11 No.6

soyuz11回答回数22ベストアンサー獲得回数12007/05/12 15:13:41

ポイント18pt

test.phpを

mb_http_output("SJIS");

echo'こんにちは。' ;

?>

とされたらどうしょうか?

http://zapanet.info/phpdoc/function.mb-http-output.html

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません