2012-01-02 10 views
16

पर क्यूटी डिफ़ॉल्ट एन्कोडिंग सेट करें मेरे क्यूटी अनुप्रयोग में मेरी स्रोत कोड फ़ाइलों को यूटीएफ -8 के रूप में एन्कोड किया गया है। निम्नलिखित कोड के लिए ...यूटीएफ -8

QMessageBox::critical(this, "Nepoznata pogreška", "Dogodila se nepoznata pogreška! Želite li zatvoriti ovaj program ?", QMessageBox::Yes, QMessageBox::No); 

... जब मैं उस संदेश बॉक्स दिखाने के लिए, चरित्र "एस" "एस" के रूप में प्रदर्शित होता नहीं किया है, लेकिन कुछ अजीब के रूप में। ऐसा इसलिए है क्योंकि क्यूटी सभी सी-स्ट्रिंग्स को परिवर्तित करता है जैसे कि वे लैटिन -1 का उपयोग करके एन्कोड किए गए हैं। इसे सुलझाने के लिए मैं उपयोग कर रहे हैं:

QMessageBox::critical(this, QString::fromUtf8("Nepoznata pogreška"), QString::fromUtf8("Dogodila se nepoznata pogreška! Želite li zatvoriti ovaj program ?"), QMessageBox::Yes, QMessageBox::No); 

वहाँ एक रास्ता QString::fromUtf8() के लिए सभी कॉल से छुटकारा पाने के है?

+0

http://stackoverflow.com/questions/29485602/qt-convert-unicode-entites – trante

उत्तर

28

क्या आपने QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")) का उपयोग करने का प्रयास किया है?

+0

हुह, लग रहा है बेवकूफ अभी: डि नहीं पता था कि यह मौजूद है;) धन्यवाद :) – xx77aBs

+1

की तरह कुछ नहीं लगता है यह qt5 के लिए किया जा सकता है? लगता है कि setCodecForCStrings को हटा दिया गया है ... – ntzrmtthihu777

+2

मुझे डर है कि मैं निश्चित रूप से उत्तर नहीं दे सकता क्योंकि मैं क्यूटी का उपयोग करने वाली किसी भी चीज़ पर काम नहीं कर रहा हूं। मेरा अनुमान है कि क्यूटी 5 मानता है कि सभी स्रोत फाइलें यूटीएफ -8 एन्कोडेड हैं (लैटिन -1 की बजाय) जो बताएगी कि उन्होंने इसे क्यों हटा दिया। यदि आपको इस तरह की कोई समस्या हो रही है तो मैं बस अपने पसंदीदा प्रोग्रामर के टेक्स्ट एडिटर (उदा। नोटपैड ++) का उपयोग करके आपकी सभी स्रोत फ़ाइलों को जांचना होगा यूटीएफ -8 एन्कोडेड? –

0

के बारे में "लगता है कि" "Qt5 मान लिया गया है सभी स्रोत फ़ाइलें UTF-8 एन्कोडेड रहे हैं" कि: थियागो Macieira क्यूटी डेवलपर्स here द्वारा किए गए निर्णय बताते हैं।

प्रलेखन के अनुसार QT_NO_CAST_FROM_ASCII के साथ धारणा को अक्षम किया जा सकता है।