javaの日本語処理ではまっています。
場所1: 既存の文字エンコーディングから,(Javaの内部コードである)Unicodeに変換する段階.たとえば,ファイルの読み込み,javacやjasperによるコンパイル,native2asciiによるUnicodeエスケープへの変換などの段階です.
場所2: Unicodeから,任意の文字エンコーディングに変換する段階.たとえば,ServletやJSPによる出力などです.
場所3: WebブラウザがHTTPリクエストを受け取って処理する段階.
■Shift_JISを表している → SJIS
■Windows-31Jを表している → MS932(Windows PCの場合), CP943(IBM OS/2 Japanese),CP943C
■EUC-JPを表している → eucJP(Solaris PCの場合)
よくRDMBSなんかで、localeをDB独自で実装する事がありますが、Rの場合に
ついて考えてみると、CP932(MS-SJIS)では半角カナは1byteです。普段Linux
を使っているので、考えが及びませんでしたが、isalpha(半角カナ)はTrueに
なります。(localeの実装依存ですが)したがって、~