के लिए स्पष्टीकरण की आवश्यकता है मेरे पास विंडोज 7 64 बिट पर माइक्रोसॉफ्ट विजुअल स्टूडियो 2010 है। (परियोजना गुण में "वर्ण सेट", "सेट नहीं" पर सेट है लेकिन हर सेटिंग एक ही उत्पादन होता है।)एक यूटीएफ -8 बनाम सीपीपी केस
स्रोत कोड:
using namespace std;
char const charTest[] = "árvíztűrő tükörfúrógép ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP\n";
cout << charTest;
printf(charTest);
if(set_codepage()) // SetConsoleOutputCP(CP_UTF8); // *1
cerr << "DEBUG: set_codepage(): OK" << endl;
else
cerr << "DEBUG: set_codepage(): FAIL" << endl;
cout << charTest;
printf(charTest);
* 1: windows.h
भोजनालयों चीजें भी शामिल है, तो मैं मैं इसे एक अलग सीपीपी से भी शामिल कर रहा हूं।
संकलित बाइनरी में स्ट्रिंग को सही यूटीएफ -8 बाइट अनुक्रम के रूप में शामिल किया गया है। अगर मैं chcp 65001
के साथ कंसोल को यूटीएफ -8 पर सेट करता हूं और type main.cpp
जारी करता हूं, तो स्ट्रिंग सही तरीके से प्रदर्शित होती है।
D:\dev\user\geometry\Debug>chcp
Active code page: 852
D:\dev\user\geometry\Debug>listProcessing.exe
├írv├şzt┼▒r┼Ĺ t├╝k├Ârf├║r├│g├ęp ├üRV├ŹZT┼░R┼É T├ťK├ľRF├ÜR├ôG├ëP
├írv├şzt┼▒r┼Ĺ t├╝k├Ârf├║r├│g├ęp ├üRV├ŹZT┼░R┼É T├ťK├ľRF├ÜR├ôG├ëP
DEBUG: set_codepage(): OK
��rv��zt��r�� t��k��rf��r��g��p ��RV��ZT��R�� T��K��RF��R��G��P
árvíztűrő tükörfúrógép ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP
कि पीछे स्पष्टीकरण क्या है:
टेस्ट (सांत्वना ल्युसिडा कंसोल फ़ॉन्ट का उपयोग करने के लिए सेट)? क्या मैं printf
के रूप में काम करने के लिए किसी भी तरह cout
पूछ सकता हूं?
लगाव
कई का कहना है कि Windows कंसोल UTF-8 वर्णों बिल्कुल समर्थन नहीं करता।
(मेरे डिफ़ॉल्ट कंसोल: मैं हंगरी में हंगरी के पुरुष, मेरे Windows अंग्रेजी पर सेट है (तिथि प्रारूप को छोड़कर, वे हंगरी की तैयारी में हैं) और सिरिलिक अक्षरों अभी भी हंगेरी पत्र के साथ-साथ सही ढंग से प्रदर्शित कर रहे हैं हूँ कोडपेज CP852 है)
संभावित डुप्लिकेट के बारे में सर्वोत्तम प्रथाओं के बारे में पाया जा सकता है [मैं एक std :: codecvt facet कैसे लिखूं?] (http: // stackoverflow.com/questions/ 2 9 71386/कैसे-करें-i-write-a-stdcodecvt-facet) –
@ हंसपैसेंट मैं इसे वही मानता नहीं हूं। ऐसा लगता है, लेकिन 'cout' और' printf' के बीच अंतर स्पष्ट रूप से समझाता नहीं है। और मुझे कुछ भी बदलने के लिए 'cout' को बताने के लिए' codecvt' पहलू भी लिखना चाहिए? एक आसान तरीका होना चाहिए, मुझे आशा है कि ... – Notinlist