転送先:coolcode.cn
通常、ウェブページ上で指定したエンコーディングでテキストを表示できるように、ウェブページでは GB2312、UTF-8、ISO-8859-1 などのエンコーディング文字セットを指定する必要があります。 。しかし、このような状況に遭遇する可能性は高くなります。つまり、ISO-8859-1 でエンコードされた Web ページに中国語の文字を表示したり、GB2312 でエンコードされた Web ページに韓国語の文字を表示したりする必要があるかもしれません。もちろん、解決策の 1 つは、ISO-8859-1 や GB2312 エンコーディングを使用せず、UTF-8 エンコーディングを使用することです。このように、このエンコーディングを使用する限り、さまざまな言語を混在して表示できます。これは現在多くのウェブサイトで使用されている方法です。
ここで話しているのは上記の方法ではありません。なぜなら、上記の方法では文字セットを UTF-8 として指定する必要があるためです。ユーザーが手動で別の文字セットを指定した場合、またはおそらく何らかの理由でその文字セット設定は変更されません。ブラウザが自動的に正しく認識しない場合でも、特にフレームで作成された一部の Web ページでは、Firefox でフレーム内のページの文字セット設定が機能しない場合、表示される Web ページが文字化けします。文字が表示され、変更できません(つまり、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{$i + 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']));
}
?>