1. ホーム
  2. unicode

[解決済み】このUnicode結合文字はどうなっているのか、どうすればフィルタリングできるのか?

2022-02-15 07:44:39

質問内容

กิิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้้้้้้้้้้่อ็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็ัิิิิิิิิิิิิ็็็็็็้้้้้่อ็็้้้้้้ ก็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็ิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิ์้้้้้้้้้่้้้้้้้้้้้้้้้้้ำ กั็็็็ิิิิิิิิิ กิิิิิิิิิิิิิิิิ ก้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้่อ็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็ิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิิ์้้้้้้้้่้่้้้้้่้้้้้้่้้้้้่้้้่้้้้่้้่้้้้้้้้้้้้้้้้้้้้้่้้้้้้

最近、facebookのコメント欄で見かけたものです。

どのようにサニタイズすればいいのでしょうか?

どのように解決するのですか?

<ブロッククオート

このユニコード文字はどうなっているのですか?

が連なった文字ですね。 結合文字 . 問題の結合文字は、基本文字の上に行きたいので、(文字通り)積み重なるのです。例えば、以下のような場合です。

ก้้้้้้้้้้้้้้้้้้้้

...それは、ก(タイ文字 コ・カイ ) ( U+0E01 )の後に、タイ語の結合文字である マイトー ( U+0E49 ).

これをどのようにサニタイズすればよいのでしょうか?

あなた かもしれない テキストを前処理して、1つの文字に適用できる結合文字の数を制限しますが、その労力は見返りに見合わないかもしれません。現在のすべての文字のデータシートが必要なので、その文字が結合文字かどうかがわかりますし、言語によっては1つのベースに複数の発音区分が書かれているものもあるので、少なくともいくつかは許可する必要があります。さて、コメントをラテン文字セットに限定するのであれば、より簡単な範囲チェックになりますが、もちろんそれは、コメントをいくつかの言語だけに限定したい場合にのみ選択可能な方法です。より詳しい情報、コードシートなどはこちらで ユニコード・オルグ .

ところで、ある文字がどのように構成されたかを知りたい場合、つい最近、別の質問のために、私は Quick-and-dirty "Unicode Show Me"ページ をJSBinで公開しています。テキストエリアにテキストをコピー&ペーストするだけで、そのテキストが構成するすべてのコードポイント(〜文字)が表示され、上記のような各文字の説明ページへのリンクが表示されます。JavaScriptで書かれているので、U+FFFF以上の文字をJavaScriptで扱うには、この質問のためにしたい以上の作業をしなければならないからです(JavaScriptでは、"文字"は、以下のようになります)。 常に 16ビットなので、言語によっては1つの文字が2つのJavaScriptの"文字"に分かれてしまうことがあり、それを考慮していませんでした)でも、ほとんどのテキストには便利なんですよ......。