2011-10-14 14 views
0

アクセント付き文字を含む文字列を出力するWebページがあります。PHPのインクルードファイル内のアクセント付き文字

メインページで変数$myGlobalStrが宣言されていますが、それは関数outputGlobalVariable()によって返されます。すべてが期待どおりに動作します。私は私のページに<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">を使用しようとした

私は機能outputFunctionVariable()内の非常に同じ文字列、出力はUTF-8形式であることを宣言する。..

、私はまたの初めにheader('Content-type: text/html; iso-8859-1')を含めるしようとした広告私のインクルードファイル。どちらも動作しません。

以前はインクルードファイルで文字セットを指定する必要はありませんでした。私はoutputFunctionVariable()に関数utf8_decode()を使用できることを知っていますが、なぜそれが起こっているのか、これの背後にある論理を理解することに興味があります。

WindowsではZend Server CEを使用しています。

のindex.php

<? 
    $myGlobalStr = "1. Dites bonjour à l'élève."; 
    include("includes/functions.php"); 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<html> 
<head> 
    <title>Test</title> 
</head> 

<body> 

<?=outputGlobalVariable()?> 
<hr> 
<?=outputLocalVariable()?> 

</body> 
</html> 

のfunctions.php

<? 
    function outputGlobalVariable() { 
     global $myGlobalStr; 

     return $myGlobalStr; 
    } 

    function outputLocalVariable() { 
     $myStr = "2. Dites bonjour à l'élève."; 

     return $myStr; 
    } 
?> 

出力

1. Dites bonjour à l'élève. 
------------ 
2. Dites bonjour à l'élève. 
+0

これらのページを変更するために使用しているエディタは、物事を揺るがしている可能性があります。PHPのせいではありません。結局のところ、functions.phpはindex.phpとは別のファイルなので、PHPがそれらを手に入れようとするよりずっと前に、ゴミ箱が出てきた可能性があります。 –

答えて

2

ファイルの1つにISO-8859-1の文字列とUTF-8文字列が含まれています。
ページがLatin-1文字セットで宣言されたので、後者にはガベージ文字が出力されます。

2つを混用しないでください。 UTF-8スクリプトを識別し、Latin-1に戻します。または、すべてをUTF-8に移動します。

0

.phpファイル(両方とも私の場合ndex.phpとのfunctions.phpは)あなたも試してみてください、UTF-8 BOMで保存されます。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

とにかくそれは良いアイデアは、あなたがだけでなく、すべての.phpファイルに沿って使用しているエンコーディングの間で一貫しているのですメタタグとContent-Type HTTPレスポンスヘッダーが含まれています。

関連する問題