転送先:coolcode.cn
通常、Web ページでは、指定したエンコーディングでテキストを表示できるように、GB2312、UTF-8、ISO-8859-1 などのエンコーディング文字セットを指定する必要があります。ウェブページ。しかし、このような状況に遭遇する可能性は高くなります。つまり、ISO-8859-1 でエンコードされた Web ページに中国語の文字を表示したり、GB2312 でエンコードされた Web ページに韓国語の文字を表示したりする必要があるかもしれません。もちろん、解決策の 1 つは、ISO-8859-1 や GB2312 エンコーディングを使用せず、UTF-8 エンコーディングを使用することです。このように、このエンコーディングを使用する限り、さまざまな言語を混在して表示できます。これは現在多くのウェブサイトで使用されている方法です。
ここで話しているのは上記の方法ではありません。なぜなら、上記の方法では文字セットを UTF-8 として指定する必要があるためです。ユーザーが手動で他の文字セットを指定した場合、または何らかの理由でその文字セットが指定されなくなるからです。この設定が機能せず、ブラウザが自動的に正しく認識しない場合、特にフレームで作成された一部の Web ページでは、表示される Web ページが文字化けします。フレーム内のページの文字セット設定が機能しない場合、表示されるWebページはまだ文字化けしていますが、Firefoxでは文字化けが表示され、変更できません(つまり、RightEncodeプラグインをインストールしないと)。
ここで紹介する方法は、Web ページが ISO-8859-1 文字セットに指定されている場合でも、中国語や日本語などを正しく表示できます。原理は非常に単純です。つまり、ISO-8859-1 エンコーディングの最初の 128 文字を除く他のすべてのエンコーディングは NCR (数値文字参照) で表されます。たとえば、「漢字」という 2 つの文字を「漢字」の形式で書くと、どの文字セットでも正しく表示できます。この原則に基づいて、既存の Web ページを任意の文字セットで表示できる Web ページに変換できる次のプログラムを作成しました。ソース Web ページの文字セットとソース Web ページを指定し、送信ボタンをクリックするだけで、ターゲット Web ページが取得されます。特定のテキストのみを変換することもできます。テキスト ボックスにテキストを入力し、そのテキストの元の文字セットを指定するだけで、エンコードされたテキストがページに表示されます。さらに、WordPress プラグインも作成し、どの文字セットでもブログが正しく表示されるようになりました。
変換プログラムアドレス: http://jb51.net/dxy/nochaoscode/
コードをコピー コードは次のとおりです:
function nochaoscode($encode, $str, $isemail = false) {
$str = iconv($encode, "UTF-16", $str);
for ($i = 0; $i < strlen($str); $i ,$i ) {
$code = ord($str{$i}) * 256 ord($str{$私 1});
if ($code < 128 and !$isemail) {
$output .= chr($code);
} else if ($code != 65279) {
$output .= "".$code.";";
}
}
return $output;
}
$encode = $_POST['encode'];
if ($encode == '') $encode = 'UTF-8';
if ($_FILES['file']['size'] > 0) {
$data = nochaoscode($encode, file_get_contents($_FILES['file']['tmp_name']));
header ("Content-type: application/octet-stream;");
header ("Content-length: ".strlen($data));
header ("Content-Disposition: attachment; filename=".$_FILES['file']['name']);
echo $data;
} else {
header ("Content-type: text/html; charset=UTF-8");
if ($_POST['email']) {
echo htmlentities(nochaoscode($encode, $_POST['email'], true));
}
else {
echo htmlentities(nochaoscode($encode, $_POST['content']));
}
?>