2012-11-08 6 views
0

는 ISO 8859-1 표준을 참조 후, 캐릭터 £이 값 0xa3을 가지고 있음을 알게, 나는 C를 사용하여 표시 할, 그래서 나는이 프로그램을 쓰기 :c를 사용하여`£`문자를 어떻게 표시하나요?

#include <stdio.h> 

int main() 
{ 
     printf("\\xa3 is: %c.\n", '\xa3'); 
     printf("£ is: %c.\n", '£'); 

     return 0; 
} 

나는이 소스 코드를 저장을 iso 8859-1 인코딩의 파일. 그리고 이 각각 %c을 충족하면 내 프로그램이 £으로 두 번 표시되기를 바랍니다.

하지만 작동하지 않는 이유는 무엇입니까? 목표 달성을 위해 프로그램을 어떻게 수정할 수 있습니까?

저는 리눅스를 사용하고 있습니다.

편집 :

그것의 표시는 다음과 같이이다 :

\xa3 is: �. 
£ is: �. 
+4

은 ISO-8859-1에 터미널을 설정되어 있습니까? –

+3

_'But, 작동하지 않습니다. '- 어떻게됩니까? 어떻게 작동하지 않습니까? – deanWombourne

+0

@deanWombourne, 질문이 업데이트되었습니다. –

답변

0

당신은 출력 단자가 encoding 당신이 (무작위)이 문자를 선택한 일치하는지 확인해야합니다. ISO 8859-1을 (를) 사용하지만 터미널에 예기중인 경우 UTF-8,보고있는 것과 같은 결과를 얻을 수 있습니다.

+0

이 문제와 관련된 C 언어의 "런타임 문자 집합"이 있습니까? –

+0

예, 문자 집합을 포함하는 런타임 환경이 있습니다. –

+0

+1 (무작위로) : – deanWombourne

2

터미널이 8859-1이 아닌 UTF-8로 실행중인 것처럼 보입니다. 이 시도 : (터미널이 UTF-8에서 실행되는 경우)

#include <stdio.h> 

int main(void) 
{ 
    printf("\\xC2\\xA3 is: %s.\n", "\xC2\xA3"); 
    printf("£ is: %s.\n", "£"); 
    return 0; 
} 

을 내 Mac의 경우, 출력은 다음과 같습니다

\xC2\xA3 is: £. 
£ is: £. 
+0

그렇다면 내 터미널을 변경하는 방법은 8859-1에서 실행됩니까? –

+0

Linux에서 사용중인 터미널 에뮬레이터는 무엇입니까? 메뉴에서 어딘가에 속성 옵션을 찾을 수 있으며 속성 중 하나는 코드 집합 (사용중인 글꼴과 관련이 있지만 다른 글꼴)입니다. –

+0

터미널 0.4.8, Xfce 터미널 에뮬레이터를 사용 중입니다. 인코딩과 관련된 메뉴 항목을 찾을 수 없습니다 ... –