0

私は持っています:

String text = // same String (text)
byte[] byteArray = org.apache.commons.codec.binary.Base64.decodeBase64(text);
System.out.println("Length: " + byteArray.length);

そして、Windowsでの結果は31で、Linuxでは32です。sun.misc.BASE64Decoderで試しましたが、ほとんど同じ問題がありました...

異なるオペレーティングシステムで結果の長さが異なるのはなぜですか。両方で機能するように修正するにはどうすればよいですか。

4

3 に答える 3

3

おそらく、Windowsでデフォルトで使用される文字エンコードがLinuxのものとは異なるためです。

入力としてStringの代わりに、単純なバイトarraryを試してみてください。

于 2012-04-23T18:44:54.757 に答える
1

("\r\n")これは、デフォルトでそれぞれとになっている行区切り記号が原因である可能性があり("\n")ます。それらなしで試してみませんか(それが問題である場合)。

ちょうど私の2セント。

于 2012-04-23T18:44:06.533 に答える
1

この特定のケースでは、文字列のテキストが異なるという問題がありました。コマンドラインからロードする場合、Linuxでは、コマンドラインのテキストの前後に一重引用符を追加する必要があります。そうしないと、Windowsでは追加されない何かが文字列に追加されます。

于 2012-04-26T01:31:41.987 に答える