- - PR -
Javaと半角カナ文字&バイト数について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-09-02 00:01
おつかれさまです。だれかご教授ください。
Linux上でMQから受信したString文字列(複数項目が連結されている)を バイト変換して、各項目長でパースしてゆくと 半角カナ項目でずれてしまいます。 どうやら、半角カナが2バイト扱いされているようなのですが、 @なぜでしょうか? (Windows上では1バイト扱いされ問題なく動きます) Aどのような対応策があるのでしょうか? BJavaはUnicodeで扱われるので、全ての文字は2バイトだと思っていたのですが、 実際に半角英数や半角カナの入ったStringをgetBytesして1byteづつ切り出すと 1文字づつ切り出されます。どうしてでしょうか? [ メッセージ編集済み 編集者: 未記入 編集日時 2005-09-02 00:20 ] |
|
投稿日時: 2005-09-02 07:08
> @なぜでしょうか?
Javaは16ビット(2バイト)で文字列を扱うからです。 > Aどのような対応策があるのでしょうか? 適切な日本語エンコーディングでgetBytesしましょう。 > BJavaはUnicodeで扱われるので、全ての文字は2バイトだと思っていたのですが、 > 実際に半角英数や半角カナの入ったStringをgetBytesして1byteづつ切り出すと > 1文字づつ切り出されます。どうしてでしょうか? getBytes()の引数にUnicodeエンコーディングを与えていないからだと思います。 ただ、もし電文を項目長で切り出しをするのであれば、もともとの生のMQから渡されてくるデータを利用しないと危ない気がしますね。はじめからInputStreamとかbyte[]で取得したらいかがでしょうか。 |
|
投稿日時: 2005-09-02 09:17
Anthyhimeさん語返答ありがとうございます。
受信電文をbyte[]で取得したものを、 項目長で切り出して試してみます。 アドバイスありがとうございます。 |
1