উত্তর:
NSString* str = @"teststring";
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSString
অভ্যন্তরীণভাবে ইউটিএফ -16 ব্যবহার করে যাতে কিছুটা পারফরম্যান্স লাভ হতে পারে কারণ এটি কোনও ইউটিএফ -16 <-> ইউটিএফ -8 রূপান্তর করতে হবে না। ব্যক্তিগতভাবে, আমরা (@ gnasher729 হিসাবে প্রস্তাবিত) পারফরম্যান্সের চেয়ে দৃ rob়তা এবং সর্বত্র ইউটিএফ -8 ব্যবহার করি।
না:
NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding];
তারপর এগিয়ে বিনা দ্বিধায় NSJSONSerialization:JSONObjectWithData
।
মন্তব্যগুলি, অফিসিয়াল ডকুমেন্টেশন এবং যাচাইয়ের পরে , এই উত্তরটি কোনও অভিযোগযুক্ত এনএইউএল টার্মিনেটর অপসারণ সম্পর্কিত আপডেট করা হয়েছিল:
ডেটা ইউজিং এনকোডিং দ্বারা নথিযুক্ত হিসাবে :
ফেরত মূল্য
dataUsingEncoding:allowLossyConversion:
দ্বিতীয় যুক্তি হিসাবে NO এর সাথে প্রার্থনা করার ফলাফল
যেমন getCString দ্বারা ডকুমেন্ট করা হয়েছে: সর্বোচ্চ দৈর্ঘ্য: এনকোডিং: এবং সিস্ট্রিংইউজিং এনকোডিং ::
মনে রাখবেন যে ফিরিয়ে দেওয়া ডেটা
dataUsingEncoding:allowLossyConversion:
কোনও কঠোর সি-স্ট্রিং নয় কারণ এতে কোনও NULL টার্মিনেটর নেই
dataUsingEncoding:
নাল-সমাপ্ত ডেটা ফেরত দেয় না। কেবল UTF8String
এবং অন্যান্য পদ্ধতিগুলি যা একটি সি স্ট্রিং দেয় একটি নাল-টার্মিনেটেড স্ট্রিং দেয়।
(note that the data returned by dataUsingEncoding:allowLossyConversion: is not a strict C-string since it does not have a NULL terminator)
। আমি অবশ্যই এটি আগে মিস করেছি আমি ভবিষ্যতে কিছু লিখতে হবে নিশ্চিত, যদিও।
cStringUsingEncoding:
আমি অধীনে খুঁজছিলাম। dataUsingEncoding:
।)
সুইফট বিকাশকারী এখানে আসার ক্ষেত্রে,
এনএসএসটিং / স্ট্রিং থেকে এনএসডিটাতে রূপান্তর করতে
var _nsdata = _nsstring.dataUsingEncoding(NSUTF8StringEncoding)
উদ্দেশ্য গ:
NSString *str = @"test string";
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:str];
NSString *thatStr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
সুইফট:
let str = "test string"
let data = NSKeyedArchiver.archivedData(withRootObject: str)
let thatStr = NSKeyedUnarchiver.unarchiveObject(with: data) as! String
প্রথমত, আপনি dataUsingEncoding:
অতিক্রম করার পরিবর্তে ব্যবহার করা উচিত UTF8String
। আপনি কেবল UTF8String
তখনই ব্যবহার করবেন যখন আপনার C
সেই এনকোডিংয়ের একটি স্ট্রিং দরকার ।
তারপরে, UTF-16
কেবল আপনার বার্তার NSUnicodeStringEncoding
পরিবর্তে পাস করুন।NSUTF8StringEncoding
dataUsingEncoding:
NSString *str = @"hello";
NSData *data = [NSData dataWithBytes:str.UTF8String length:str.length];
str
127 এর চেয়ে বড় কোড পয়েন্ট থাকে This এটি কারণ str.length
ইউনিকোড অক্ষরের সংখ্যা দেয়, বাইটের সংখ্যাটি দেয় না। উদাহরণস্বরূপ, যদি str
হয় @"にほんご"
, str.length
4 দেয় যখন str.UTF8String
আসলে 12 বাইট ধারণ করে। এমনকি যদি আপনি প্রতিস্থাপন str.length
দ্বারা strlen(str.UTF8String)
, এটা এখনও ক্ষেত্রে যেখানে জন্য ভুল হবে str
যেমন শূন্য অক্ষর রয়েছে @"にほ\0んご"
।
উদ্দেশ্য গ:
এনএসডিটা এনএসডিটারিং:
NSString* str= @"string";
NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding];
এনএসডিটা থেকে এনএসএসটারিং:
NSString* newStr = [[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding];
সুইফট:
তথ্য স্ট্রিং:
var testString = "string"
var somedata = testString.data(using: String.Encoding.utf8)
স্ট্রিংয়ের ডেটা:
var backToString = String(data: somedata!, encoding: String.Encoding.utf8) as String!
NSString *str = @"Banana";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:true];
উদ্দেশ্য গ
NSString *str = @"Hello World";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];
দ্রুতগতি
let str = "Hello World"
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: false)