2012-01-20 4 views
0

UTF-8 코드가 포함되어 있거나 포함되지 않은 파일을 읽고 인쇄하려고합니다.Qt로 유니 코드 문자 감지 및 인쇄

내 예제 파일이 포함되어

하이
\ u22a2
헤이

내 niave 코드 : 잘못된

QFile file("/path/qteststream.txt"); 

    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) 
     std::cout << "Fail" << std::endl; 

    QTextStream stream(&file); 
    QTextStream qout(stdout); 
    stream.setAutoDetectUnicode(true); 

    while(!stream.atEnd()) 
     qout << stream.readLine() << endl; 

그러나 분명히, 필자가하고 뭔가. \ u22a2가 유니 코드 문자로 인쇄되기를 기대하지만 프로그램은 단지 문자열을 인쇄합니다. 문자와 같은 시퀀스를 어떻게 인쇄 할 수 있습니까?

+0

입력 파일에 문자 그대로 정확한 문자열 "\ u22a2"이 포함되어 있습니까? 또는 다른 프로그램을 사용하여 실제 문자 '\ u22a2'를 작성 했습니까? 처음이라면 QT 스트림 클래스가 자동으로 변환 할 것입니다. –

+0

예,'\ u22a2'는 문자열로 간주됩니다. 수동으로 변환해야합니까? – TeaOverflow

답변

4

\u22a2은 C++ 컴파일러에서 유니 코드 문자로 해석 될 수 있지만 소스 코드와는 다른 것들이 있습니다. 텍스트 파일에서 \u22a2은 연속해서 6 문자 (\, u, 2, 2, a 및)입니다. 을 텍스트 파일에 직접 붙여 넣어보십시오.

의도적으로 텍스트 파일에 \u22a2이 있고이를 유니 코드 문자로 변환하려는 경우 this post을 확인해야 할 수 있습니다.

+0

글쎄, 사실 나는 사용자가 여분의 테이블에 대한 검색 및 복사 및 붙여 넣기 문자를 시도했다. 그래서, 그냥'\ u'로 시작하는 문자열을 찾고'QString :: fromUtf8()'를 사용하여 문자열을 변환해야합니까? – TeaOverflow

+0

@EvgeniB .: 답변의 링크를 확인하십시오. –

1

\u 이스케이프 코드는 입력 파일이 아닌 C/C++ 파일에서만 사용됩니다. "유니 코드 자동 검색"은 파일이 UTF-8 (ASCII도 부분 집합이므로 괜찮음) 또는 BOM 인 UCS-2가 될 수 있으며 응용 프로그램에 투명하게 표시 될 수 있음을 의미합니다.