Unicodeの符号理論と問題点

歴史
1963年、コンピュータの使用がまだ普及していないで、その後、文字エンコーディングとして0〜127の範囲で、7ビットのASCIIコードを使用し、文字のほんの一部をサポートしていますが、コンピュータの普及とともに、異なります国は、相互に互換性がない、問題になるにつながる、自分のコーディング標準を製造し始めました。
問題を解決するために、ISOは、コーディングUCSのための文字や記号のほとんどは、Unicodeエンコーディングで含まれているを開発しようとし始めました。

Unicodeエンコーディング
UTF-8、UTF-16などの文字と数字ではなく、実際の符号化方式なので、UTF規格の開発、の間の実際のマッピングテーブルユニコードなど、Unicodeは、設計され理論の実現のためのUTF。

コードポイントとユニットコード
のコードポイントは、標準のUnicode文字の数であり、現在の文字で表される0〜から0x10FFFF Unicodeエンコーディングの範囲、U + XXXXを使用します。
コード単位はポイントコードに必要なバイトのUnicodeの最小数で符号化され、UTF-8は、少なくとも1つのバイトは、UTF-16は、UCS-2は、少なくとも2つのバイトを必要とUCS-4が必要で、UTF-32は、4つのワードでありますセクション3、固定長符号として後で。

問題点
、それは様々な問題を引き起こす可能性が高いコーディングが多数、含まれているので:
視覚的な詐欺
のいくつかの文字が非常に似て、視覚的なаррӏе.comなどの問題、(U + 04CFにӏ)とapple.comにつながりますPunycodeでのCHROMコーディング領域を使用してこの問題を解決するために、そのドメインはxn--始まる、符号化される場合、例えばаррӏе.comため、CHROMが視覚的にケースを欺く検出することができる、それが(xn--80ak6aa92e.comとして符号化されますこの機能を持っていない、よく知られたサイトへの変換だけで視覚的欺くます)、Firefoxと。(PythonライブラリはIDNAこの機能を実装したライブラリです)
しかし、そこでもある視覚欺瞞例をPUNYCODE:䕮䕵䕶䕱.COM xn--google.comとしてエンコード

双方向ディスプレイ
起因するアラブとヘブライ語は右から左に読み取られ、そのようなtxt.exeなどのUnicode制御文字を追加した後に問題がある可能性がありexe.txtなる

デジタル表示
ベンガル0-9 0 1২3 4 5 6 7 8 9 4(U + 09EA)、実際に4

当量の
WAFクラス通知一部同等の処理文字の意味、そして濾過し、例えばローカルホスト相当localhostに、それに加えてⓛocaⓛhostも同等であり、これは見過ごすことは容易である

文字削除
\ X3C \ X73 \ X63 \ X72で \ XC2 \ X69 \ X70 \ X74 \ Spark Proのを文字列、XC2 \ではない有効な文字列、タイトルにつながる可能性が、その過程でいくつかのロジックを削除することがあり

、文字の置き換え
いくつかのケースでは、U + FFFFは問題につながる可能性が?に置き換えられます、

バッファオーバーフロー
例えば、「ß'.toUpperCase()は変換前のケースの長さかどうかを確認するために、SSとなった場合の変換を行う際に、複数文字になることがあり、オーバーフローが存在するバッファリングすることが可能です。

おすすめ

転載: www.cnblogs.com/cimuhuashuimu/p/11490280.html