方法をエンコード-独立した文字列比較にはJava?
-
27-09-2019 - |
質問
んな問題の比較文字列です。お送りい文字列をこのサーバ(バイトとして使用 getBytes()
らかにするサービスです。私は確保されるエンコーディングが同一のクライアントとサーバの起動として -Dfile.encoding=UTF-8
.
気付いたので、問題がっている気がします。を行う valueOf
の文字列を受けていクライアントから、変換してenum.私の印刷文字列には、 正確に 同じです。がいを行う場合には compareTo
, かがゼロ以外の数 equals
を返します false
.
私はこでエンコードの問題です。んだが--まだビットの初心者でクライアント-サーバプログラミングソケット
そして、自分の書いた文章を取得す:
Waiting for connections on port 9090
Connected to client: 127.0.0.1
received command: GetAllItems
The value is |GetAllItems| (from client)
The value is |GetAllItems| (from enum)
equals: false
なぜですか?
更新
ここではどのように思再構成の文字列からストリームです。恐らくここでしかったので、良かったかな?
byte[] commandBytes = new byte[1024];
in.read(commandBytes); //in is a BufferedInputReader
String command = new String(commandBytes);
解決
私の推測であることからバッファなどが有名ですが、これらを自の文字列が追加されnullのreconsituted文字列になります。この法律のためのnullの中に組み込の文字列をJavaでのCおよび当社)は、Javaの取り扱いとは異なっ標準UTF-8です。
を録音し直してください長さを読み、その長さの文字列は、文字列コンストラクタ:
int bytesRead = in.read(commandBytes);
String command = new String(commandBytes, 0, bytesRead);
他のヒント
問題はどのようすを構築する文字列です。お読みの上、バイトをバッファ長を1024いない語りの文字列コンストラクターだけを見ている関連する。でコード...
byte[] commandBytes = new byte[1024];
int length = in.read(commandBytes); //in is a BufferedInputReader
String command = new String(commandBytes, 0, length);
使用 java.text.Collator
比較文字列です。
所属していません StackOverflow