2012-04-23 22 views
0

上Base64.decodeBase64(テキスト)異なる結果:Javaの - 私はWindowsとLinux

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

また、Windowsでの結果は31で、Linux上で、それは私がsun.misc.BASE64Decoderにしようとしたきれいな32です多くの場合、同じ問題が発生しました...

どのように結果が異なるオペレーティングシステム上で異なっており、どのように修正して両方で動作するようにしますか?

+0

「テキスト」はどこから来たのですか?どちらの場合も同じですか? – axtavt

+0

コマンドライン引数 –

+0

@axtavt私はあなたが何かになるかもしれないと思います。 LinuxとWindowsでtext.lengthを実行すると、違いがあります。 Linuxのバージョンはより長くなっています。これはコマンドラインから取ったものです。 –

答えて

0

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

1

これは、デフォルトで("\r\n")("\n")に設定されている行区切り記号によって発生する可能性があります。あなたはそれらを使わないで試してみませんか(それが問題ならば)。

ちょうど私の2セントです。

+0

文字列にはこれらの文字は含まれていません –

2

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

文字列の代わりに単純なバイトアラインメントを入力できますか?

+0

エンコードとは関係ありそうにありません。 Base64はASCIIベースです。 –

+0

私はbyte [] ciphertextArray = Base64.decodeBase64(text.getBytes())を試しました。私はまだ同じ結果を得ています。 –