ホームページ > バックエンド開発 > PHPチュートリアル > Webページを任意の文字セットで正常に表示する方法2(続き)_PHPチュートリアル

Webページを任意の文字セットで正常に表示する方法2(続き)_PHPチュートリアル

WBOY
リリース: 2016-07-21 15:55:45
オリジナル
987 人が閲覧しました

転送先:coolcode.cn
数日前、Web ページを任意の文字セットで正常に表示する方法についての記事を書きました。その紹介は非常に簡単で、最初の 128 文字以外の文字セットは NCR で表されます。当時は簡単すぎると思ったので、具体的な変換方法を紹介します。しかし、後でこの質問をしている人がいたので、ここで詳しく説明します。
最初のステップは、ソース文字セットの文字列を UTF-16 文字セットに変換することです。このステップは、UTF-16 文字セットの各文字が 2 バイトであり、後の処理が容易になるためです。ソース文字セットに対して直接処理を行う場合、非常に複雑になります。ソース文字セットは、元の Web ページのメタ タグから取得することも、個別に指定することもできます。これは、ユーザーが送信したファイルが必ずソース文字セットであることを保証できないため、ユーザーがフォームでソース文字セットを指定できるようにするためです。 HTML ファイルである必要があります (他のファイルについても同様です)。はい、たとえば、WordPress の中国語パッケージのソース ファイルは po ファイルであり、その中のコンテンツもこの方法で処理できます)。 HTML ファイルの場合、文字セットを指定するためのメタタグが必ずしも含まれていないため、フォームで別途指定してください。文字セットは比較的安全です。ある文字セットを別の文字セットに変換するのは実際には非常に面倒だと思うかもしれませんが、PHP にはそのような関数が既に含まれているため、さまざまな文字セット間の変換を簡単に実現できます。 iconv 拡張機能がマシンにインストールされていない場合は、基本的に何もできないため、mb_convert_encoding 関数を使用することもできます。一流の専門家でない限り、これほど多くの種類のコードを自分で変換するのは大変なことです。 iconv の方が効率的で、より多くの文字セットをサポートしているため、iconv を使用することをお勧めします。
上記のステップが完了したら、次のステップは文字列を 2 バイト単位で処理することです。これら 2 バイトは直接数値に変換され、xxxx; の xxxxx になります。数値が 128 未満の場合は、この文字を直接使用します (ここでは 1 バイトになることに注意してください)。それ以外の場合は、xxxx; の形式を使用します。ここで注意すべき点は、この数値が 65279 (16 進数の 0xFEFF) の場合は無視してください。これは、Unicode エンコーディングの送信制御文字であり、現在の文字列には既に iso-8859 しか含まれていないためです。1 は最初の 128 文字です。エンコーディングなので必要ありません。
基本的なアイデアは次のとおりです。
ダウンロード: nochaoscode.php

コードをコピーします コードは次のとおりです:

関数 nochaoscode($encode, $str) {
$str = iconv($encode, "UTF-16BE", $str);
for ($i = 0; $i $code = ord($str{$i}) * 256 + ord($str{$i + 1});


} else if ($code != 65279) {
$出力
}
}
$output を返す;
}
?>

関数のパラメータのうち、$encode はソース文字セット、$str は変換する必要がある文字列です。返される結果は変換された文字列です。
補足: 今日、レジェンドはもっと簡単な方法を教えてくれました。それは、mb_convert_encoding 関数を直接使用することです。 mb_convert_encoding は、NCR エンコーディングである HTML-ENTITIES と呼ばれるエンコーディング形式をサポートしているためです。使い方はさらに簡単です。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/318231.html技術記事転送先:coolcode.cn 先日、Webページを任意の文字セットで正常に表示する方法についての記事を書きました。導入は非常に簡単で、最初の128文字以外の文字セットはNCRで表現されます。 ...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート