Unicode の印刷可能な文字の範囲を教えてください。[例: Ascii で印刷可能な文字の範囲は \u0020 ~ \u007f]
9 に答える
http://en.wikipedia.org/wiki/Unicode_control_charactersを参照してください。
特に C0 および C1 制御文字http://en.wikipedia.org/wiki/C0_and_C1_control_codesを見たいと思うかもしれません
ウィキによると、C0 制御文字は U+0000 ~ U+001F および U+007F (ASCII と同じ範囲) の範囲にあり、C1 制御文字は U+0080 ~ U+009F の範囲にあります。
C 制御文字以外にも、Unicode には何百もの書式設定制御文字があります。たとえば、文字間隔を狭くするゼロ幅の非結合文字や、双方向のテキスト制御などです。このフォーマット制御文字はかなり散らばっています。
さらに重要なことに、Unicode の非印刷文字を知る必要があるのは何ですか? ほとんどの場合、あなたがしようとしていることは、問題を解決するための間違ったアプローチです。
まず、質問から「UTF8」という単語を削除する必要があります。これは関係ありません (UTF8 は Unicode のエンコーディングの 1 つに過ぎず、質問とは直交するものです)。
2 つ目: 「印刷可能/印刷不可」の意味は、Unicode ではあまり明確ではありません。おそらく、あなたは「グラフィカルなキャラクター」を意味しています。また、スペースが印刷可能/グラフィックであるかどうかについても議論することができます。非グラフィック文字は、基本的に、制御文字で構成されます。範囲 0x00-0x0f と、散在するその他の文字です。
とにかく、Unicode 文字の大部分 (200.000 以上) は「グラフィカル」です。ただし、これは確かに、それらがあなたの環境で印刷可能であることを意味するものではありません.
「ランダムな印刷可能な」ユニコード文字列を生成するつもりなら、すべての「印刷可能な」文字を含めようとするのは、私には悪い考えのようです。
すべきことは、フォントを選択してから、そのフォントに定義されたグリフを持つ Unicode 文字のリストを生成することです。freetype のようなフォント ライブラリを使用して、グリフをテストできます (FT_Get_Char_Index(...) != 0 をテストします)。
1 つの方法は、各文字をテクスチャにレンダリングし、それが表示されるかどうかを手動で確認することです。このソリューションではスペースが除外されます。
私はそのようなプログラムを作成し、それを使用して、最初の 471859 コード ポイント内に約467241文字の印刷可能な文字があることを確認しました。この番号を選択したのは、Unicode の最初の 4 つのプレーンすべてをカバーしているためで、すべての印刷可能な文字が含まれているようです。https://en.wikipedia.org/wiki/Plane_(Unicode)を参照
範囲のリストを生成するようにプログラムを改良したいと思っていますが、今のところ、すぐに回答が必要な人のために私が取り組んでいるものは次のとおりです。
https://editor.p5js.org/SamyBencherif/sketches/_OE8Y3kS9
このツールを投稿するのは、この質問が、印刷可能な範囲を知るためのわずかに異なるアプリケーションを探している多くの人々を引き付けると思うからです. 質問に完全には答えていませんが、これが役立つことを願っています。
Unicode、厳密な用語には範囲がありません。数は無限になる可能性があります。
あなたが与えたのは、ASCII文字が1バイトのUTF8ではありません。
範囲に関しては、印刷可能な文字の範囲はないと思います。それは常に進化しています。上記のページを確認してください。