- - PR -
文字がリーダーバイトかどうかの判断方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-07-31 19:56
あるシステム(システムA)のプログラムで文字列を指定バイトで強制的にカットしており、そのデータを別システム(システムB)に送信しています。システムBでは、送信されたデータで、末尾が文字化けしている場合スペースに変換しなければいけないという要件があります。
例 システムA:「123あ」というデータを4バイト目でカットする システムB:「123?」というデータを受け取る。 この場合、システムBでは文字列の末尾が2バイト文字の中の上位バイトであることをJavaで判断したい。 ちなみに、システムAのプログラムは修正できません。 | ||||
|
投稿日時: 2008-07-31 21:34
イロイロと手段がありますが、未記入さんはどこまで考えてみて、どういう点で詰まってますか?
| ||||
|
投稿日時: 2008-08-01 10:42
スフレさん
ご返信ありがとうございます。 >イロイロと手段がありますが、未記入さんはどこまで考えてみて、どういう点で詰まってますか? 上位バイトである末尾の文字を16進数で表示した場合、おそらくある範囲内に収まると考えています。しかし、その具体的な範囲がわかりません。 16進数の全角文字の上位バイトの範囲をご教授いただきたく。 可能であれば、簡単なサンプルプログラムをご提示いただければ幸いです。 以上、よろしくお願いします。 | ||||
|
投稿日時: 2008-08-01 11:02
それはここの参加者にもわかるはずがありません。未記入さんが関わっているシステムがどんな文字コードを使っているか、未記入さんしか知り得ないです。 | ||||
|
投稿日時: 2008-08-01 11:35
スフレさん
すいません。 文字コードを明記していませんでした。 UTF-8です。 以上、よろしくお願いします。 | ||||
|
投稿日時: 2008-08-01 12:04
UTF-8は1文字を1〜6byteで表現するので「上位バイト」=「1byte」になりません。
それよりも1byteで表現できる文字範囲内に含まれているかどうかで判断したほうが簡単です。 | ||||
|
投稿日時: 2008-08-01 14:02
ACさん
ご回答ありがとうございます。 >それよりも1byteで表現できる文字範囲内に含まれているかどうかで判断したほうが簡 >単です。 大変申し訳ございませんが、サンプルソース等はございませんでしょうか? | ||||
|
投稿日時: 2008-08-01 16:57
似たようなものを過去に作ったことがありますが、要するに
http://ja.wikipedia.org/wiki/UTF-8 に書いてあるUTF-8の仕様に基づき、うまく文字の境目でカットするようにする実装を書く、ということに尽きます。 |