"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > विंडोज़ पर `std::cout` में UTF-8 स्ट्रिंग्स को सही तरीके से कैसे आउटपुट करें?

विंडोज़ पर `std::cout` में UTF-8 स्ट्रिंग्स को सही तरीके से कैसे आउटपुट करें?

2024-11-12 को प्रकाशित
ब्राउज़ करें:129

How to Output UTF-8 Strings Correctly to `std::cout` on Windows?

विंडोज़ पर सी में यूटीएफ-8 स्ट्रिंग्स से निपटना

यूटीएफ-8 के रूप में स्ट्रिंग्स को एनकोड करना क्रॉस-प्लेटफॉर्म अनुप्रयोगों के लिए व्यापक रूप से उपयोग किया जाता है। हालाँकि, विंडोज़ पर UTF-8 स्ट्रिंग्स को std::cout में आउटपुट करना अद्वितीय चुनौतियाँ प्रस्तुत करता है।

विंडोज़ पर डिफ़ॉल्ट व्यवहार std::cout के लिए गैर-यूनिकोड प्रारूपों में स्ट्रिंग्स की अपेक्षा करना है। जब इसे UTF-8 स्ट्रिंग्स के साथ प्रस्तुत किया जाता है, तो यह दूषित वर्ण प्रदर्शित करता है।

इस समस्या का समाधान करने के लिए, दो प्राथमिक चरण हैं:

  1. कंसोल कोड पेज को UTF-8 पर सेट करें : SetConsoleOutputCP फ़ंक्शन का उपयोग करके, कंसोल को सूचित करें कि आने वाली बाइट स्ट्रीम UTF-8 एन्कोडेड है।
  2. स्ट्रीम बफरिंग सक्षम करें: विज़ुअल में std::basic_filebuf के डिफ़ॉल्ट व्यवहार को अक्षम करें स्टूडियो, जो यूटीएफ-8 बाइट अनुक्रमों को तोड़ता है और उन्हें अलग-अलग बाइट्स के रूप में पास करता है। इसे दूर करने के लिए, setvbuf स्ट्रीम बफरिंग को सक्षम करता है, यह सुनिश्चित करते हुए कि पूरी स्ट्रिंग समग्र रूप से पारित हो जाती है।

यहां एक संशोधित कोड स्निपेट है जिसमें ये समाधान शामिल हैं:

#include 
#include 
#include 
#include 

int main() {
    // Set console code page to UTF-8
    SetConsoleOutputCP(CP_UTF8);

    // Enable buffering to prevent byte-by-byte transmission
    setvbuf(stdout, nullptr, _IOFBF, 1000);

    // Output UTF-8 string
    std::string test = u8"Greek: αβγδ; German: Übergrößenträger";
    std::cout 

इन चरणों के अलावा, ध्यान दें कि विंडोज़ कंसोल में रैस्टर फ़ॉन्ट गैर-ASCII यूनिकोड वर्णों को सही ढंग से प्रदर्शित नहीं कर सकते हैं। उचित रेंडरिंग सक्षम करने के लिए, ट्रू टाइप फ़ॉन्ट पर स्विच करने की अनुशंसा की जाती है, जो अब विंडोज 10 और बाद के संस्करणों में डिफ़ॉल्ट है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3