सबसे पहले, स्रोत कोड में गैर-असीसी वर्णों का उपयोग करना आमतौर पर एक अच्छा विचार नहीं है। शायद यह हो रहा है कि चीनी पात्रों को यूटीएफ -8 के रूप में एन्कोड किया जा रहा है जो एएससीआई के साथ काम करता है।
अब, wprintf()
क्यों काम नहीं कर रहा है। इसे स्ट्रीम अभिविन्यास के साथ करना है। प्रत्येक धारा केवल सामान्य या चौड़ी पर सेट की जा सकती है। एक बार सेट हो जाने पर, इसे बदला नहीं जा सकता है। यह पहली बार इस्तेमाल किया जाता है। (printf
के कारण एएससीआई है)। इसके बाद wprintf
गलत अभिविन्यास के कारण काम नहीं करेगा।
दूसरे शब्दों में, एक बार जब आप printf()
का उपयोग करते हैं तो आपको printf()
का उपयोग करना जारी रखना होगा। इसी तरह, यदि आप wprintf()
से शुरू करते हैं, तो आपको wprintf()
का उपयोग करना जारी रखना होगा।
आप printf()
और wprintf()
पर इंटरमीक्स नहीं कर सकते हैं। (विंडोज को छोड़कर)
संपादित करें:
के बारे में क्यों wprintf
लाइन अपने आप में भी काम नहीं करता है इस सवाल का जवाब करने के लिए। ऐसा शायद इसलिए है क्योंकि कोड संकलित किया जा रहा है ताकि 中日友好
का यूटीएफ -8 प्रारूप wchar_
में संग्रहीत किया जा सके। हालांकि, wchar_t
को 4-बाइट यूनिकोड एन्कोडिंग की आवश्यकता है।
wchar_t
साथ परेशान न हों, और सिर्फ मल्टी-बाइट char
के साथ चिपके रहते हैं: (Windows में 2-बाइट) तो दो विकल्प है कि मैं के बारे में सोच सकते हैं नहीं है। यह आसान तरीका है, लेकिन यदि उपयोगकर्ता की प्रणाली चीनी लोकेल पर सेट नहीं है तो टूट सकती है।
wchar_t
का उपयोग करें, लेकिन आपको यूनिकोड एस्केप दृश्यों का उपयोग करके चीनी वर्णों को एन्कोड करने की आवश्यकता होगी। यह स्पष्ट रूप से स्रोत कोड में इसे अपठनीय बना देगा, लेकिन यह किसी भी मशीन पर काम करेगा जो लोकेल के बावजूद चीनी चरित्र फोंट प्रिंट कर सकता है।
आप किस कंपाइलर का उपयोग कर रहे हैं? जीएफसी यूटीएफ -8 ओ अधिकांश प्लेटफ़ॉर्म पर डिफ़ॉल्ट है। मुझे एन्कोडिंग समस्या की तरह लगता है। – cyco130
@ cyco130, yes, gcc – Alcott