今日、ある人がTwitterの140文字の制限をハッキングしているのを見て驚いた。メッセージは930文字で構成されています。どうしてこれが可能でしょうか?
このツイートへの直接リンクはこちらです。便宜上、以下の完全なツイートのスクリーンショットをコピーしています。
今日、ある人がTwitterの140文字の制限をハッキングしているのを見て驚いた。メッセージは930文字で構成されています。どうしてこれが可能でしょうか?
このツイートへの直接リンクはこちらです。便宜上、以下の完全なツイートのスクリーンショットをコピーしています。
回答:
メッセージには、UTF-8として不適切にエンコードされたUnicodeサロゲートコードポイントが含まれています。この種類の不適切なエンコードは、CESU-8とも呼ばれます。一部のTwitterインターフェイスは、CESU-8でエンコードされたサロゲートコードポイントを文字として受け入れます(140文字の制限のため)が、表示目的では有効なUTF-8を期待し、これらは有効なUTF-8シーケンスではありません。そのため、これらの各シーケンスの3バイトを、それぞれ4文字の3つのCスタイル8進エスケープシーケンスとして表示し、各サロゲートコードポイントは、12文字を使用して表示されます。
たとえば、\ 355 \ 240 \ 265 \ 355 \ 263 \ 220は、UTF-8をデコードするときに通常行われるようにサロゲートを拒否せずに、CエスケープUTF-8としてデコードすると、サロゲートペアU + D835 U + DCD0にデコードします。CESU-8のデコード時に行われるように、このサロゲートペアをUTF-16として処理すると、Unicode文字U + 1D4D0 MATHEMATICAL BOLD SCRIPT CAPITAL A(𝓐)が生成されます。
Cスタイルの8進エスケープがデコードされ、結果がCESU-8として解釈される場合、次のようになります。
Т𝓐𝓛𝓜𝓐𝓣𝓨ТТвиттиминеограничиваемсялюдиии!!!!!! 140непредел!=)))))𝓐𝓛𝓜𝓐𝓣𝓨𝓐𝓛𝓜𝓐𝓣𝓨𝓐𝓛𝓜𝓐𝓣𝓨
ここでは、Unicodeフォントの完全なセットがインストールされていない人のための、イメージとしてのものです。
バックスラッシュで始まり、3つの数字が続く文字の各グループは、「エスケープシーケンス」です。それぞれが単一の文字を表します。これらは通常、英語以外の文字や記号など、キーボード上に存在しない文字に使用されます。
私の推測では、文字をカウントするとき、Twitterはこれらの各グループを1つの文字としてカウントしますが、ブラウザーに表示するときは4として印刷します。
更新:
使用可能なエスケープシーケンスの一部は「制御文字」です。これらは、警告音の再生、カーソルの左右または上下への移動、カーソルの左側の文字の削除などを行うようにコンピューターに指示します。それらはどれも私が最後に言及したものではありませんが(前のキャラクターを削除します)、彼はそのキャラクターを使ってTwitterを混乱させたかもしれません。
興味深いことに、通常のキャラクターに戻したとき、それは非常に反復的で、次のようになります。
í µ í ³ í µ í ³ › í µ í ³ œ í µ í ³ í µ í ³ £ í µ í ³ ¨ í µ í ³ í µ í ³ › í µ í ³ œ í µ í ³ í µ í ³ £ í µ í ³ ¨
アップデート2:
彼の説明は「ПишитевDM、всегданасвязи)」であり、Google Translateから「DMに書き込み、常に接続中」と表示されます。それが何を意味するのか、それがどのように役立つのか正確にはわかりません。