2010-05-02 4 views
0

나는 파일을 표준 출력 스트림을 쓰고 있어요,하지만이 같은 인코딩의 어떤 종류를 받고 있어요 :QT 스트림에 인쇄 가능한 문자열로 유니 코드를 변환하는 방법

\ u05ea \ u05e7 \ u05dc \ u05d9 \ u05d8 \ u05e9 \ u05e1 \ u05d9 \ u05de \ u05dc \ u05e9 \ u05d9 \ u05e0 \ u05d5 \ u05d9 \ u05d1 \ u05e1 \ u05d2 \ u05e0 \ u05d5 \ u05df \ u05dc \ u05d3 \ u05e2 \ u05ea \ u05d9 \ u05d0 \ u05dd \ u05d0 \ u05e0 \ u05d9 \ u05d6 \ u05d5 \ u05db \ u05e8 \ u05e0 \ u05db \ u05d5 \ u05df

어떻게 이것을 인쇄 가능한 문자열로 변환 할 수 있습니까?

답변

3

당신이 문자열을 인쇄하는 방법을 알아낼 수는 없지만, 그건 그냥 유니 코드 : 내가 컴파일하면

#include <QString> 
#include <QFile> 
#include <QDebug> 

int main(int argc, char **argv) 
{ 

    QString s = "\u05ea\u05e7\u05dc\u05d9\u05d8 \u05e9\u05e1\u05d9\u05de\u05dc \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05e1\u05d2\u05e0\u05d5\u05df \u05dc\u05d3\u05e2\u05ea\u05d9 \u05d0\u05dd \u05d0\u05e0\u05d9 \u05d6\u05d5\u05db\u05e8 \u05e0\u05db\u05d5\u05df"; 

    QFile file1("1.txt"); 
    if (!file1.open(QIODevice::WriteOnly | QIODevice::Text)) 
    return 1; 

    QTextStream out(&file1); 
    out << s << "\n"; 

    qDebug() << s; 
    return 0; 
} 

하고

g++ -lQtCore -I /usr/include/QtCore test.cpp 
./a.out 

나는 인쇄 가능한 문자를 모두 볼 수 있습니다 실행 콘솔 디버그 출력 및 파일에서 :

"תקליט שסימל שינוי בסגנון לדעתי אם אני זוכר נכון" 

그래서 당신은 아마 뭔가 잘못하고 있거나 잘못된 방향으로 oking하면 코드를 붙여 넣으면 더 잘 도와 줄 수 있습니까?

+0

UTF-8이 아닙니다. '\ uXXXX'는 * 유니 코드 이스케이프 시퀀스 * : 유니 코드 코드 포인트의 텍스트 표현입니다. –

+0

고마워, 네 말이 맞아. 그것들은 유니 코드 기반 문자입니다. AFAIK에는 UTF-8이 유니 코드 문자를 작성/인코딩하는 방법이기 때문에 UTF-8 이스케이프 시퀀스가 ​​없습니다. 결과 파일은 UTF-8로 인코딩됩니다. $ 파일 1.txt 1.txt : UTF-8 유니 코드 텍스트 – duncan

관련 문제