2009-07-10
Stringと文字コード、RubyとJava
で大きく変わりました。
Ruby1.8の文字列クラスは文字列をバイトコード配列として
処理を行うメソッドを呼び出す場合、外部から文字コードを
指定する必要があります。メソッドの引数で指定しなかった
場合、実行環境のデフォルト文字コード($KCODE)が使われ
ます。
Ruby1.9の文字列クラスは自身の文字コード情報を保持して
行うメソッドを呼び出す場合、内部で保持する自身の文字コード
情報を利用します。外部からの文字コード指定は必須では
なくなりました。
Rubyで外部から文字列を読み込む場合、1.9からは読込時に
おける文字コードの指定が可能になりました。読込時に
情報がセットされます。読込時に文字コードを指定しなかった
必ず文字コードを指定する必要があります。
(force_encodingメソッドで後から文字列の文字コード
情報を強制的にセットする(書き換える)ことは可能です。)
Javaの文字列クラスはRuby1.8と同様に自身の文字コード
情報を持ちません。
JavaがRuby1.8と異なる点は内部文字コードをUTF-8UTF-16
(Java1.4まではUCS-2)に統一(決めうち)している点です。Javaの
あるものとして処理を行います。
Javaの文字列にUTF-8UTF-16でない文字列を渡した場合には
文字化けを起こすことがあります。UTF-8UTF-16でない
変換する必要があります。
推敲中...?
コメント
mtoyoshi
2009/08/19 13:04
JavaってUTF-16じゃなかったでしたっけ??