एन्कोडिंग अगर मैं एक स्ट्रिंग 7-बिट ASCII तालिका के बाहर एक चरित्र युक्त की लंबाई ले, मैं Windows और Linux पर अलग अलग परिणाम प्राप्त:सी स्ट्रिंग विंडोज़/लिनक्स
Windows: strlen("ö") = 1
Linux: strlen("ö") = 2
एक Windows मशीन स्ट्रिंग पर स्पष्ट रूप से "विस्तारित" एएससीआई प्रारूप में 0xF6
के रूप में एन्कोड किया गया है, जबकि लिनक्स मशीन पर यह 0xC3 0x96
के साथ यूटीएफ -8 में एन्कोड किया जाता है, जो 2 अक्षरों की लंबाई देता है।
प्रश्न:
क्यों एक सी स्ट्रिंग अलग ढंग से एक Windows और एक Linux मशीन पर इनकोडिंग हो जाता है?
सवाल एक चर्चा मैं कोड की समीक्षा (see this thread) पर एक साथी मंच के सदस्य के साथ था में आया।
क्या दोनों स्रोत फ़ाइलें समान एन्कोडिंग और बीओएम सेटिंग का उपयोग कर रही हैं? – sidyll
ऐसा लगता है कि स्थानीय सेटिंग्स से एन्कोडिंग उठाया जा सकता है। और ऐसा लगता है कि आप इसे भी सेट कर सकते हैं? https://gcc.gnu.org/onlinedocs/cpp/Invocation.html (-fwide-exec-charset = charset) – Sush
क्योंकि Windows CP-1252 में डिफ़ॉल्ट है, और माइक्रोसॉफ्ट के दौरान यूटीएफ -8 के साथ कुछ समस्या है पिछड़ा संगत रखना चाहता है। इसे एसयू [विंडोज 7 यूटीएफ -8 और यूनिकोड] पर देखें (// superuser.com/q/221593) – Danh