タグ

unicodeとUnicodeに関するsabroのブックマーク (23)

  • Web系雑記: サロゲートペアをJavaScriptで検出する方法

    ちょっと調べる機会があったので。 まずサロゲートペアの性質について ・Unicode と UTF http://www.parof.jp/Programing/Unicode/ Unicode で「D800~DFFF」の範囲(これがサロゲート領域)にあるビット列がでてきたら、次の2バイトと合わせて1文字と認識しなさい、と定められています(逆に言うと、「D800~DFFF」はそれだけで表現される文字というのが定められていません)。そしてこの領域のうち「D800~DBFF」は4バイトのうち上位2バイトで使い、「DC00~DFFF」は下位2バイトで使われます。 JavaScriptのcharCodeAtメソッドでサロゲートペアの文字 一文字を調べると、charCodeAt(0)で上位サロゲートのコード、 charCodeAt(1)で下位サロゲートのコードが返ってきます。 (ちなみにlengthは

  • http://rocketeer.dip.jp/secProg/unicodebug004.pdf

  • UTF-8 エンコーディングの危険性 - WebOS Goodies

    的に、まともな国際化ライブラリを使っていれば、上記のような不正な文字コードはきちんと処理してくれるはずです。実際、 Opera, Firefox, IE ともに適切にエスケープしてくれました。また、 UCS に変換した後にエスケープ処理を行うことでも対処できるかもしれません。しかし、複数のモジュールで構成されるような規模の大きいアプリケーションでは、そのすべてが適切な処理を行っていると保証するのも、なかなか難しいかと思います。ここはやはり、すべての外部入力に含まれる不正なシーケンスを、水際で正規化するという処理を徹底するのが一番かと思います。 例えば Ruby の場合、不正な UTF-8 コードを検出する最も簡単な方法は、 String#unpack を使って UCS へ変換してみることです(昨日の記事への kazutanaka さんからのはてぶコメントにて、 iconv でも同様なこ