いやーちょっとJavaでハマりました。
文字列のバイト数をカウントしたい時どうやるの?という話なんです。
つまり、全角文字は2バイト、半角文字を1バイトとしてカウントしたい時ですね。
具体的には("文字列".getBytes("Shift_JIS")).lengthとやればいいのだ!!と思ったら、結論から言うとこれはダメだった!!
「いったん、文字コードをShift_JISに変換してから、そのバイト数をカウントする」という手法ですね。
少なくともWindows OS上で実行すると、「~」、「㈱」や「-(全角ハイフン)」は、2バイトではなくて1バイトで結果が返ってきます(涙)。
C#言語では大丈夫だったので、油断してしまいました。
これはどういう事かというと、Javaは、Unicodeにあって、Shift_JISに無い文字は、1バイト文字の「?」に強制的に変換してしまい、それを1バイトとしてカウントしてるみたいなんです。
結局、文字列を一文字づつ見て行って、UTF-8でバイト数をカウント。
1バイト文字は1バイトとしてカウントし、1バイトを超えたら強制的に2バイトとしてカウントする・・・というコードでやってみました。
これもどうなんだと思うんですが、今のところ思った通りの制御が出来ています。