2013-02-05 2 views
0

Base64 텍스트가 들어있는 byte []가 있습니다. 나는이 텍스트 끝을 먹고 싶어올바른 인코딩 받기

은 그것의 문자열을 만듭니다

str = new String(text,"charset"); 

내가 새로운 문자열을 만들 때 내가 어떻게 내가 원본 텍스트에서 indormation을 후회하고 있지 않다 확신 할 수 있습니다.

나는 새로운 String (텍스트, "charset")을 수행 할 때 올바른 문자 세트를 전달할 수 있음을 의미합니다.

원본 인코딩이 "cp-1255"이고 str = new String (텍스트, "UTF-8")을하고있는 경우 텍스트를 망칠 수 있습니까?

+1

Base64는 기본적으로 모든 바이너리 데이터의 ASCII 인코딩이므로 추가 정보없이 손실됩니다. 또한 바이트 배열이 생성되는 방식과 그 위치에 대해 알지 못하는 경우 유용한 답변을 제공 할 수 없습니다. – jlordo

+0

'new String (base64, StandardCharsets.US_ASCII);을 사용하십시오. – McDowell

답변

1

, 당신은

Encoding conversion in java 원본 텍스트를 파괴하지 않기 점검 할 필요가에 당신이 필요로하는 그런

BASE64Decoder decoder = new BASE64Decoder(); 
byte[] decodedBytes = decoder.decodeBuffer(encodedBytes); 

를 사용하여 바이트를 디코딩/해독하는 데 필요 올바른 인코딩으로 입력을 읽을 수도 있습니다.

1

Base64의 기원에 따라 문자 인코딩을 알아야합니다. 또한 Base64가 UTF-8로 2 진 데이터를 나타내지 않는 경우 올바른 인코딩을 사용해야하며 UTF-8을 사용하면 가비지를 반환하거나 예외를 throw합니다. 이 경우

, 당신은 할 필요가 : bytes는 base64로 문자열을 디코딩으로 인한 바이트 배열입니다

str = new String(bytes, "Windows-1255"); 

.

관련 문제