ホームページ >php教程 >php手册 >PHP Web ページのエンコードの問題: 任意の文字セットで Web ページを正常に表示する方法

PHP Web ページのエンコードの問題: 任意の文字セットで Web ページを正常に表示する方法

WBOY
WBOYオリジナル
2016-06-21 09:01:481090ブラウズ

通常、Web ページ上で指定したエンコードでテキストを表示できるように、Web ページでは GB2312、UTF-8、ISO-8859-1 などのエンコード文字セットを指定する必要があります。しかし、この状況に遭遇する可能性は高くなります。つまり、ISO-8859-1 でエンコードされた Web ページに中国語の文字を表示したり、GB2312 でエンコードされた Web ページに韓国語の文字を表示したりする必要がある場合があります。もちろん、解決策の 1 つは、ISO-8859-1 や GB2312 エンコードを使用せず、UTF-8 エンコードを使用することです。これを使用する限り、さまざまな国の言語を混合して表示できます。これは現在多くの Web サイトで使用されている方法です。

ここで話しているのは上記の方法ではありません。なぜなら、上記の方法では文字セットを UTF-8 として指定する必要があるためです。ユーザーが手動で他の文字セットを指定した場合、または何らかの理由でその文字セットが指定されなくなるからです。この設定が機能せず、ブラウザが自動的に正しく認識しない場合、特にフレームで作成された一部の Web ページでは、表示される Web ページが文字化けします。フレーム内のページの文字セット設定が機能しない場合、表示されるWebページはまだ文字化けしていますが、Firefoxでは文字化けが表示され、変更できません(つまり、RightEncodeプラグインをインストールしないと)。

ここで紹介する方法は、Web ページが ISO-8859-1 文字セットに指定されている場合でも、中国語や日本語などを正しく表示できます。原理は非常に単純です。つまり、ISO-8859-1 エンコーディングの最初の 128 文字を除く他のすべてのエンコーディングは NCR (数値文字参照) で表されます。たとえば、「漢字」という 2 つの文字を「漢字」の形式で書くと、どの文字セットでも正しく表示できます。この原則に基づいて、既存の Web ページを任意の文字セットで表示できる Web ページに変換できる次のプログラムを作成しました。ソース Web ページの文字セットとソース Web ページを指定し、送信ボタンをクリックするだけで、ターゲット Web ページが取得されます。特定のテキストのみを変換することもできます。テキスト ボックスにテキストを入力し、そのテキストの元の文字セットを指定するだけで、エンコードされたテキストがページに表示されます。

ダウンロード: nochaoscode.php

function nochaoscode($encode, $str, $isemail = false) {
$str = iconv($encode, "UTF-16", $str);
for ($i = 0; $i $code = ord($str{$i) }) * 256 + ord($str{$i + 1});
else if ($code != 652) 79) {
$output .= "&#".$code.";"; > $encode = $_POST['encode'];
if ($encode == '') $encode = 'UTF-8';
if ($_FILES['file']['size'] > ; 0) {
$data = nochaoscode($encode, file_get_contents($_FILES['file']['tmp_name']));
ヘッダー ("Content-type: application/octet-stream;" ) ;
ヘッダー ("Content-length: ".strlen($data));
ヘッダー ("Content-Disposition:attachment; filename=".$_FILES['file']['name']) ;
echo $data;
} else {
ヘッダー ("Content-type: text/html; charset=UTF-8");
if ($_POST['email']); 🎜> echo htmlentities(nochaoscode($encode, $_POST['email'], true));
}
else {
echo htmlentities(nochaoscode($encode, $_POST['content'] ) );
}
?>


encode:

ファイル:

< ; input type="submit" />

encode:
content:




エンコード:

メール:
< /form>
}
?>






声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。