PHP は Unicode と Utf-8 間の変換を実装します
1. エンコーディングの原理と実装
Unicode エンコーディングは、utf-8 と gb シリーズのエンコーディング (gb2312、gbk、gb18030) 間の変換の基礎ですが、utf-8 からこれらへの比較表を直接作成することもできます。エンコーディング ですが、utf-8 の変数エンコーディングが不確実であるため、これを行う人はほとんどいません。そのため、実際には Unicode と gb エンコーディングの比較表 (utf-2) が使用されます。 8 は単なる実装であり、この 2 つは次のような対応関係になります。
u0000 0800 - u0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx現在 utf-8 で使用されている文字はすべて UCS-2 であるため、逆に UTF-8 に変換する場合は、4 ~ 6 バイトのエンコーディングを考慮する必要はありません。 4 バイトを超える UTF-8 文字が表示された場合は、文字化けとして直接無視するか、Unicode エンティティ形式 ("long int;" 形式) に変換して、ブラウザまたは関連する解析プログラムに引き渡して処理することができます。 、PHP を使用して Unicode を utf-8 エンコーディングに変換するアルゴリズムは次のとおりです。
function uni2utf8( $c ) { if ( $c < 0x80) { $ utf8char = chr ( $c ); } else if ( $c < 0x800) { $utf8char = chr (0xC0 | $c >> chr (0x80 | $c &) 0x3F ); } else if ( $c { } $utf8char = chr (0xE0 | t;> 0x06 & 0x3F )。フ); } //UCS-2 には 2 バイトしかないため、次の状況は不可能です。ここでは、Unicode HTML エンティティ エンコーディングの使用法について説明します。 else { $utf8char = "{$c}; } return $utf8char;" 現在の環境では考えられますutf-8 文字セット == unicode (UCS-2) ですが、理論的には、主要な文字セット間の包含関係は次のとおりです。 > gb18030 > gbk > gb2312
gbk => 18030 => ユニコード(UCS-2) => ; utf-8
| このような変換プロセスは基本的にロスレスですが、逆に、
utf-8 => unicode(UCS-2) => gbk => gb2312 |
$str = rawurldecode( $ str ) ; preg_match_all( "/(?:%u.{4})|.{4};|d+;|.+/U" , $str , $r ); $ r [0]; // Print_r ($ ar); Foreach ($ ar as $ k = & gt; $ v) { IF (SUBSTR ($ v, 0,2) == "" " %u" ){ $ar [ $k ] = iconv( "UCS-2BE" , "UTF-8" ,pack( "H4" , substr ( $v ,-4))); elseif ( substr ( $v ,0,3) == "" ){$ar [ $k ] = iconv( "UCS-2BE" , "UTF-8" ,pack( "H4" , substr ( $v ,3,-1))); } elseif ( substr ( $v, 0,2) == "" ) { 2BE" , "UTF-8" ,pack( "n" 、部分文字列 ( $v ,2,-1)))); Linux サーバーの CS-2 エンコード方式は Winodws のエンコード方式と一致しません。これに関する暗黙のルールは次のとおりです。 2 つのプラットフォームでの UCS-2 エンコーディング: 1。UCS-2 は UTF-16 と等しくありません。 UTF-16 は ASCII 文字範囲を使用して各バイトをエンコードしますが、UCS-2 は ASCII 文字範囲を超えて各バイトをエンコードできます。 UCS-2 と UTF-16 は 1 文字あたり最大 2 バイトを占有しますが、エンコーディングが異なります。 2. UCS-2 の場合、Windows のデフォルトは UCS-2LE です。 MultibyteTowidechar (または A2W) を使用すると、UCS-2LE Unicode が生成されます。 Windows のメモ帳では、テキストを UCS-2BE として保存できます。これは、変換の追加レイヤーに相当します。 3. UCS-2 の場合、Linux でのデフォルトは UCS-2BE です。 iconv (UCS-2 を指定) を使用して、UCS-2BE Unicode を変換および生成します。 Windows プラットフォームから UCS-2 に変換する場合は、UCS-2LE を指定する必要があります。 4. Windows や Linux などの複数のプラットフォームでは UCS-2 (UCS-2LE、UCS-2BE) についての理解が異なるという事実を考慮して。 MS は、Unicode に次の文字が Unicode であることを示し、ビッグ エンディアンまたはリトル エンディアンを識別するブート フラグ (UCS-2LE FFFE、UCS-2BE FEFF) があることを推奨しています。 したがって、Windows プラットフォームからのデータにこのプレフィックスが含まれていることが判明した場合でも、パニックに陥る必要はありません。 5. Linux のエンコード出力 (ファイルからの出力や printf からの出力など) は、コンソール上で適切なエンコードの一致を必要とします (エンコードが一致しない場合は、通常、プログラムのコンパイル時のエンコードに関係があります)。 )、およびコンソール変換 表示する必要があるシステム コードを入力します。たとえば、コンソールの現在のエンコードが UTF-8 の場合、UTF-8 でエンコードされたものは正しく表示できますが、GBK は表示できません。同様に、現在のエンコードが GBK の場合、GBK エンコードは表示できるはずです。よりインテリジェントに変換されます。ただし、パテなどのターミナルでは文字化けのトラブルを解消するためにターミナルのエンコード変換の設定が必要になります。
| 3. 参考として、PHP での中国語文字の完全な UNICODE エンコードとデコードの実装のペアを提供します。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。
