मैं निम्नलिखित कोड के साथ एक समस्या है:NSLog गलत एन्कोडिंग
NSString *[email protected]"你好";
char temp[200];
strcpy(temp, [strValue UTF8String]);
printf("%s", temp);
NSLog(@"%s", temp);
कोड की पहली पंक्ति में
, दो चीनी अक्षरों डबल उद्धृत कर रहे हैं। समस्या यह है कि printf फ़ंक्शन चीनी वर्णों को ठीक से प्रदर्शित कर सकता है, लेकिन NSLog नहीं कर सकता है।
सभी के लिए धन्यवाद। मैंने इस समस्या के लिए एक समाधान निकाला। फाउंडेशन डिफ़ॉल्ट रूप से यूटीएफ -16 का उपयोग करता है, इसलिए उदाहरण में सी स्ट्रिंग को आउटपुट करने के लिए एनएसएलओजी का उपयोग करने के लिए, मुझे यूटीएफ -16 सी स्ट्रिंग प्राप्त करने के लिए cStringUsingEncoding का उपयोग करना होगा और% s को प्रतिस्थापित करने के लिए% S का उपयोग करना होगा।
NSString *[email protected]"你好";
char temp[200];
strcpy(temp, [strValue UTF8String]);
printf("%s", temp);
strcpy(temp, [strValue cStringUsingEncoding:NSUTF16LittleEndianStringEncoding]);
NSLog(@"%S", temp);
अच्छा दृष्टिकोण :-) क्या यह '#' और 'परिभाषित 'के बीच रिक्त स्थान के साथ काम करेगा? साथ ही, स्पष्टीकरण की एक पंक्ति सहायक हो सकती है, क्योंकि कोड लाइन बहुत लंबी है और इस प्रकार अच्छी पठनीय नहीं है। –
@peter_the_oak मेरे लिए सही काम करें – Gank