タグ

javaとunicodeに関するyanokのブックマーク (3)

  • Javaと Pythonの識別子の仕様を比較する - yanok.net

    前の記事で,Pythonの識別子のUnicodeの扱いについて取り上げました。では,同じくUnicodeの様々な文字を識別子に使えるJavaとはどのように類似しているか,あるいは違っているでしょうか。 Javaの識別子の仕様 Javaは最初からUnicodeを前提に設計されており,変数名やメソッド名等の識別子にも世界の様々な文字を使えるようになっています。 識別子の仕様は言語仕様Java Language Specification 3.8. Identifiersに見えます。が,読んでみると実は,このセクションにはほとんど中身がなく,実質的にはJava APIのCharacterクラスの2つのstaticメソッド isJavaIdentifierStart(int) および isJavaIdentifierPart(int) にて,識別子に使える文字が規定されています。前者が識別子先頭,

  • Unicodeエスケープまとめ: Java, Python, Ruby - yanok.net

    プログラムのソースファイルに文字を記すときに、キーボードから入力できなかったりフォントがなかったりといった理由で、Unicodeの符号位置を使って記したいことがあります。最近の言語では似た形式でそうしたUnicodeエスケープを記述できますが、微妙に違いがあります。ここではJavaPython, Rubyを比べてみます。 JavaのUnicodeエスケープ Javaではバックスラッシュ(\)とアルファベットのuに続けて4桁の16進数でUnicode符号位置を記します。 例えば、\u4e00 とすれば漢字の「一」を記したのと全く同じことになります。 JavaのUnicodeエスケープはコンパイルの初期段階で処理されるものなので、文字列リテラルの中で改行を意味する \n 等とは扱いが異なることに注意が必要です。このことは『プログラマのための文字コード技術入門』第7章に記しました。 '\u'

  • 「Java SE 6完全攻略」第56回 文字列の正規化

    世界中のさまざまな文字を符号化しているUnicodeには、さまざまな特徴があります。 その特徴の1つに結合文字があります。 たとえば、「が」は「か」を表すU+304bと濁点を表すU+3099を用いて、U+304b U+3099と表すことができるのです。 これ以外にも半濁点や、ドイツ語のウムラウトなども同じように結合文字で表すことができます。 「が」を表すU+304cと、「か」+濁点のU+304b U+3099を表示しても、外見上の違いはありません。問題は結合文字ともともとの文字を同じものとして扱えるかどうかということです。 このような結合文字はコードとしては同じではありませんが、文字の扱いとしては同じものとして扱うことができます。これを等価(Equivalance)といいます。特に結合文字などの合成列の場合、同一視することが可能です。このような文字を正規等価(Canonical Equiv

    「Java SE 6完全攻略」第56回 文字列の正規化
    yanok
    yanok 2007/12/10
    「文字列を比較する場合でも、必要に応じて正規化することを心がけるようにしましょう」そんなおっかないことを言うのか…。
  • 1