2014-09-23 4 views
2

다음 문자열이 있습니다. 는 http://www.motobit.com/util/base64-decoder-encoder.asp 나는 다음과 같은 base64로 인코딩받을 문자열을 사용ISO-8859-1 용 base64 디코드

"이 (가) 일부 서부 유럽 문자 (ß)와 테스트 문자열 (A)이다."

dGhpcyBpcyBhIHRlc3Qgc3RyaW5nICjgKSB3aXRoICjkKSBzb21lIHdlc3Rlcm4gZXVyb3BlIGNoYXJzICjfKQ ==

나는 C 기능이를 디코딩 할 때, 나는 다음을 얻을 :

./test 입력 문자열 : dGhpcyBpcyBhIHRlc3Qgc3RyaW5nICjgKSB3aXRoICjkKSBzb21lIHdlc3Rlcm4gZXVyb3BlIGNoYXJzICjfKQ의 == 출력 문자열 :이 테스트입니다 문자열 ()로 일부 서유럽 문자 ()

int main() 
{ 
    char *in = "dGhpcyBpcyBhIHRlc3Qgc3RyaW5nICjgKSB3aXRoICjkKSBzb21lIHdlc3Rlcm4gZXVyb3BlIGNoYXJzICjfKQ==";    
    char out[100]=""; 
    printf("Input string is : %s\n",in); 
    base64_decode(in, out); 
    printf("Output string is : %s\n",out); 

    return 0; 
} 

iso-8859-1 charset의 상위 문자를 표시 할 수 없습니다. dGhpcyBpcyBhIHRlc3Qgc3RyaW5nICjgKSB3aXRoICjkKSBzb21lIHdlc3Rlcm4gZXVyb3BlIGNoYXJzICjfKQ의 ==

생산 OUTFILE이 예상되는 문자열을 다시 제공합니다

INFILE 포함 OUTFILE

나는 http://base64.sourceforge.net/b64.c ./b64 -d INFILE에서 코드와 같은 문자열을 시도했다. 내가 (이맥스 또는 VI)을 열고, 내가 볼 수있는 경우 :

"이있는 테스트 문자열 (A) (A) 일부 서부 유럽 문자가 (ß)는"

그러나 나는 파일이 표시 고양이 때

cat outfile 
this is a test string (�) with (�) some western europe chars (�) 

로케일 설정이 모두 UTF8하지만 파일의 표준 출력 및보기에 인쇄/디스플레이 사이에 차이가 이유를 아는 사람?

나는 base64_decode() 함수를 디버깅하기 시작했으나 디스플레이는 빨간색 청어 일 수 있습니다.

모든 의견을 감사드립니다.

감사합니다.

+0

웹 사이트의 색 구성표에 대략 비례하여 소프트웨어의 품질을 평가해야합니다. –

답변

0

입력 문자열이 char 배열에 포함되어 있으며 디코드 결과를 out 변수에 수집합니다.이 변수는 char 배열이기도합니다. base64 디코딩 된 문자열에는 와이드 문자가 포함될 수 있습니다. 따라서 printf 문은 와이드 문자를 인식 할 수 없습니다. 그래서 당신은 입력 문자열을 wchar_t 유형으로 취하고 결과를 wchar_t 유형의 out 변수로 수집하는 것이 좋습니다. 그리고 wprintf를 사용하여 결과를 표시하십시오.

감사합니다.

관련 문제