2012-04-23 2 views
0

에 다른 결과가 내가 가진 :자바 - Base64.decodeBase64 (텍스트) 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과 리눅스에 내가 sun.misc.BASE64Decoder 꽤과 노력 (32)의 많은 문제가있었습니다 ...

결과가 다른 운영 체제에서는 어떻게 다릅니 까? 어떻게 해결되어 두 운영 체제 모두에서 작동 할 수 있습니까?

+0

'텍스트'는 어디에서 왔습니까? 두 경우 모두 동일하다고 확신합니까? – axtavt

+0

명령 줄 인수 –

+0

@axtavt 나는 당신이 뭔가있을 것이라고 생각합니다. Linux와 Windows에서 text.length를 할 때 차이점이 있습니다. 리눅스 버전은 더 길다. 커맨드 라인에서 가져온 것입니다. –

답변

0

이 특정 경우에 문제는 문자열 텍스트가 다릅니다. 커맨드 라인에서 로딩 할 때, 리눅스에서는 커맨드 라인에서 텍스트 앞뒤에 작은 따옴표를 추가해야합니다. 그렇지 않으면 윈도우에없는 문자열에 무언가를 추가합니다.

1

기본값은 ("\r\n")("\n") 인 줄 구분 기호로 인해 발생할 수 있습니다. 그것들 (문제가 있다면) 없이는 왜 시도하지 않는가.

그냥 내 두 센트.

+0

문자열에 다음 문자가 포함되어 있지 않습니다. –

2

아마도 Windows에서 기본적으로 사용되는 문자 인코딩이 Linux의 문자 인코딩과 다르기 때문일 수 있습니다.

String을 입력으로 사용하는 대신 간단한 바이트로 시도해 볼 수 있습니까?

+0

인코딩과 관련없는 것 같습니다. Base64는 ASCII 기반입니다. –

+0

방금 ​​바이트 [] ciphertextArray = Base64.decodeBase64 (text.getBytes());를 시도했습니다; 나는 여전히 같은 결과를 얻었습니다. –