2010-01-30 2 views
1

C++에서 문자의 10 진수 코드를 유니 코드 문자열로 변환하려면 어떻게해야합니까? 예를 들어 정수 241을 부여합니다. 즉, ' & ntilde입니다. ' 스페인어 문자가 있으며이를 유니 코드 문자열로 변환하려고합니다.C++에서 문자의 10 진수 코드를 유니 코드 문자열로 변환하려면 어떻게해야합니까?

+4

일반적으로 "유니 코드 문자열"과 같은 것은 없습니다. UTF-8이 가장 많이 사용되는 * 인코딩 * 문자열을 지정해야합니다. – unwind

+0

을 제외하고는 UTF16LE이 가장 일반적인 Windows에서 – Anders

+0

@ unwind : "유니 코드"는 일반적으로 각 문자가 16 비트 인 UTF16으로 인식됩니다. UFT-8 인코딩이 필요할 때 명시 적으로 지정됩니다. –

답변

1

소스 문자 집합이 ISO 8859-1 또는 8859-15 (둘 다 코드 포인트 0xF1 = 241에 TILDE가있는 라틴 소문자 N을 가짐) 인 경우 유니 코드 문자 U에 대한 올바른 인코딩을 생성해야합니다 + 00F1.

이제 우리는 사용중인 유니 코드 인코딩 체계를 알아야합니다. 당신이 UTF-8을 사용하는 경우, 당신은 결과 필요합니다

\xC3 \xB1 

당신이 UTF-16 BE (빅 엔디안)를 사용하는 경우를, 다음이 필요합니다

\x00 \xF1 

당신이 사용하는 경우 UTF-16 LE (리틀 엔디안)이 필요합니다

\xF1 \x00 

당신이 UTF-32 사용하는 경우, 당신은 대신 2

의 4 바이트가 필요합니다 그리고 당신은 문자열을 원하는 경우, 다음과 같이해야합니다 U + 0000 (NULL)을 다음 문자로 인코딩하십시오.

필요한 양식을 모르는 경우 큰 문제가 있습니다. 유니 코드를 사용하려면 다양한 양식이 어떻게 인코딩되는지 이해해야합니다. 도서관은 많은 어려움을 덜어 주지만 궁극적으로 적어도 minimum about Unicode을 알아야합니다.

0

런타임에 문자 코드가 결정되고 explained by Jonathan과 같은 리터럴을 사용할 수 없으면 툴킷을 사용해야합니다. 예를 들어, Qt에서 :

QString codepointToString(QString codepointDecimal) { 
    int codepoint = codepointDecimal.toInt(); //TODO: check errors 
    QChar character(codepoint); 
    return QString(character); 
} 
관련 문제