ホームページ php教程 php手册 任意の文字セットで Web ページの通常の表示を実現する PHP メソッド

任意の文字セットで Web ページの通常の表示を実現する PHP メソッド

Jun 21, 2016 am 08:57 AM
code quot str

通常、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 ページが取得されます。特定のテキストのみを変換することもできます。テキスト ボックスにテキストを入力し、そのテキストの元の文字セットを指定するだけで、エンコードされたテキストがページに表示されます。さらに、WordPress プラグインも作成し、どの文字セットでもブログが正しく表示されるようになりました。

実装方法:

最初のステップは、ソース文字セットの文字列を 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 進数の 0x FEFF) の場合は無視してください。これは Unicode エンコードにおける送信制御文字であり、現在の文字列にはすでに最初の 128 文字が iso-8859 -1 のみエンコードされているためです。文字なので必要ありません。

基本的な考え方は次のとおりです:

テーブル>

関数のパラメータのうち、$encode はソース文字セット、$str は変換する必要がある文字列です。返される結果は変換された文字列です。



以下は引用内容です:
以下为引用的内容:

function nochaoscode($encode, $str) {
$str = iconv($encode, "UTF-16BE", $str);
for ($i = 0; $i < strlen($str); $i++,$i++) {
$code = ord($str{$i}) * 256 + ord($str{$i + 1});
if ($code < 128) {
$output .= chr($code);
} else if ($code != 65279) {
$output .= "&#".$code.";";
}
}
return $output;
}
?>

function nochaoscode($encode, $str) {
$str = iconv($encode, "UTF-16BE", $str); i = 0; $i $code = ord($str{$i}) * 256 + ord($str{$i + 1}) );
if ($code <128) {
$output .= chr($code)
} else if ($code != 65279) {
$output .= "&#".$code.";";
}
}
return $output;
?>
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Visual Studio Code で Unity プロジェクトを編集すれば、準備完了です。 Visual Studio Code で Unity プロジェクトを編集すれば、準備完了です。 Aug 08, 2023 am 10:21 AM

Microsoft は、Visual Studio Code 用の Unity 拡張機能のプレビュー バージョンをリリースしました。この新しい Unity 拡張機能を使用すると、Unity ゲームを作成およびデバッグできるようになります。この新しい Unity 拡張機能は、Visual Studio および Visual Studio Tools for Unity ですでに利用可能ないくつかの人気機能をもたらし、Visual Studio Code の C# を Unity 開発により適したものにします。現在、VSCode の Unity 拡張機能は次のものを提供しています。 Unity エディターと Unity プレーヤーをデバッグするための Unity デバッガー。 Unity 固有の C# アナライザーとリファクタリング。ユニ

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Python組み込み型strソースコード解析 Python組み込み型strソースコード解析 May 09, 2023 pm 02:16 PM

1 Unicode コンピュータ ストレージの基本単位は 8 ビットで構成されるバイトです。英語は 26 文字といくつかの記号のみで構成されているため、英語の文字はバイト単位で直接格納できます。ただし、他の言語 (中国語、日本語、韓国語など) では、文字数が多いため、エンコードに複数のバイトを使用する必要があります。コンピューター技術の普及に伴い、非ラテン文字エンコード技術は発展を続けていますが、依然として 2 つの大きな制限があります。 多言語サポートがないこと。 ある言語のエンコード スキームを別の言語で使用することはできません。また、統一された標準もありません。たとえば、中国語には GBK、GB2312、GB18030 など、多くのエンコード標準があります。エンコード方式が統一されていないため、開発者は異なるエンコード間で相互に変換する必要があり、必然的に多くのエラーが発生します。

Python の __str__ と __repr__ の類似点と相違点は何ですか? Python の __str__ と __repr__ の類似点と相違点は何ですか? Apr 29, 2023 pm 07:58 PM

__str__ と __repr__ の類似点と相違点は何ですか? 文字列の表現については誰もが知っています。Python の組み込み関数 repr() は、識別を容易にするためにオブジェクトを文字列の形式で表現できます。これが「文字列表現」です。 repr() は、特別なメソッド __repr__ を通じてオブジェクトの文字列表現を取得します。 __repr__ が実装されていない場合、ベクトルのインスタンスをコンソールに出力すると、結果の文字列が次のようになります。 >>>classExample:pass>>>print(str(Example()))>>>

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 Jun 13, 2016 am 10:15 AM

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

写真が消える問題を解決する方法 写真が消える問題を解決する方法 Apr 07, 2024 pm 03:02 PM

写真が消える問題を解決する方法 まず、写真ファイル $file=$_FILES['userfile']; if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner() image_src) VALUES ('images/ {$file['name'

为什么小弟我在php上写的这个代码,在浏览器上什么都不显示 为什么小弟我在php上写的这个代码,在浏览器上什么都不显示 Jun 13, 2016 am 10:24 AM

为什么我在php上写的这个代码,在浏览器上什么都不显示啊

Go 言語の str の秘密を明らかにする Go 言語の str の秘密を明らかにする Mar 29, 2024 am 11:27 AM

Go 言語は、高速、簡潔、効率的なオープンソース プログラミング言語であり、プログラマーの間で人気が高まっています。 String(文字列)はプログラムでよく使われるデータ型の一つで、Go言語でも独特の処理方法を持っています。この記事では、読者が Go 言語の文字列 (str) の謎を解き明かし、具体的なコード例を通じてその使用法と特徴を分析するように導きます。文字列の定義と初期化 Go 言語では、文字列は二重引用符 "" で囲まれた一連の文字です。例: str

See all articles