2011-10-05 10 views
12

को लागू करने के बाद qDebug() ing को खो देता हूं तो मैं "यूनिकोडनेस" खो देता हूं, मैं QApplication ऑब्जेक्ट को चलाने के बाद यूनिकोड वर्णों को प्रिंट करने की क्षमता खो रहा हूं।जब मैं QApplication

निम्न कोड से

और सभी आवश्यक पुस्तकालयों शामिल होने:

aeiou áéíóú 
aeiou áéíóú 

मैं इस अजीब व्यवहार कैसे ठीक करूं:

int main(int argc, char** argv) 
{ 
    qDebug() << "aeiou áéíóú"; 
    QApplication app(argc, argv); 
    qDebug() << "aeiou áéíóú"; 
    return 0; 
} 

मैं इस उत्पादन मिल रहा है? मुझे यूनिकोड तारों को प्रिंट करने में सक्षम होना चाहिए (यूटीएफ -8 में आना)।

+0

@ होस्टाइलफ़र्क हां वे सभी यूटीएफ -8 में हैं, मैंने ऐसा करना सीखा है जब वेब-डेवलपिंग, यूटीएफ -8 एन्कोडेड दस्तावेजों की सेवा करना मजेदार नहीं है, फाइलें लैटिन 1 में हैं और इसे नहीं जानती हैं। lol –

उत्तर

13

2017 अद्यतन: 2011 से इस उत्तर क्यूटी 4 के लिए लागू होता है क्यूटी 5 में, पाठ कोडेक सफाया कर दिया गया है, और सभी स्रोत UTF-8 होने की उम्मीद है। "Source code must be UTF-8 and QString wants it"

देखें जब क्यूटी एक स्ट्रिंग में char * की व्याख्या, यह एक पाठ कोडेक का उपयोग करता। यह विश्व स्तर पर सेट कर दिया जाता है, और आप चुन सकते हैं आप अपनी परियोजना के लिए क्या चाहते हैं:

https://doc.qt.io/qt-4.8/qtextcodec.html#setCodecForCStrings

ध्यान दें कि क्यूटी के डिफ़ॉल्ट है लैटिन -1, और यह QApplication निर्माता कॉल स्टैक में है कि डिफ़ॉल्ट कहीं स्थापित कर सकते हैं। आप विश्व स्तर पर अपनी परियोजना में UTF-8 का उपयोग कर रहे हैं, तो आप कोशिश कर सकते हैं:

int main(int argc, char** argv) 
{ 
    qDebug() << "aeiou áéíóú"; 

    QApplication app(argc, argv); 
    QTextCodec *codec = QTextCodec::codecForName("UTF-8"); 
    QTextCodec::setCodecForCStrings(codec); 

    qDebug() << "aeiou áéíóú"; 
    return 0; 
} 

और देखते हैं कि क्या आपकी समस्या हल करती है।

+0

यह मुद्दा, सही तय किया। –