English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
حل مشكلة URL غير مناسبة في iOS
عند إنشاء اتصال HTTPS، يجب على العملاء إنشاء عنوان HTTPS
إذا كانت العنوان تحتوي على نص صيني، فإن البرنامج سيقوم بالانهيار، والتحقق من ذلك أظهر أن السبب هو عدم تحويل النص الصيني
في مكتبة NSString وجدت الطرق التالية
- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding - (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
لقد جربت، ناجح
NSString* string1 = @"https://www.cloudsafe.com/%D8%AF%D9%81%D9%84%D9%8A%D8%A7"; NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString* string3 = [string2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString* string4 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString* string5 = [string3 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString* string6 = [string4 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString* string7 = [string5 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
النتائج الصادرة عن string1-7 كالتالي
string1:https://www.cloudsafe.com/%D8%AF%D9%81%D9%84%D9%8A%D8%A7 string2:https://www.cloudsafe.com/%D8%AF%D9%81%D9%84%D9%8A%D8%A7 string3:https://www.cloudsafe.com/%25E6%2596%2587%25E4%25BB%25B6%25E5%25A4%25B9 string4:https://www.cloudsafe.com/%D8%AF%D9%81%D9%84%D9%8A%D8%A7 string5:https://www.cloudsafe.com/%D8%AF%D9%81%D9%84%D9%8A%D8%A7 string6:https://www.cloudsafe.com/%D8%AF%D9%81%D9%84%D9%8A%D8%A7 string7:https://www.cloudsafe.com/المجلد
سألخص كيفية استخدامي:
بعد إنشاء URL المركبة، قم بتحويل الكل مرة أخرى
NSMutableString *address = [[NSMutableString stringWithString:SetNiChengStringWithoutUserNameAndNiCheng] mutableCopy]; address = [[address stringByAppendingString:app.name] mutableCopy]; address = [[address stringByAppendingString:@"/"] mutableCopy]; address = [[address stringByAppendingString:_nameTextField.text] mutableCopy]; address = [[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] mutableCopy]; address = [[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] mutableCopy];
على الجانب الخادم كيف يمكن فقط التخزين البسيط، يمكن للخادم بعد استقبال البيانات ألا يحتاج إلى الترميز كصيني
عندما يطلب العميل هذه البيانات، يمكن للعميل نفسه الترميز
بعد الحصول على النص يمكن ترميزه مرة واحدة ليعرض بشكل صحيح كصيني:
str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
شكرًا على القراءة، آمل أن تكون قد ساعدتكم، شكرًا لدعمكم لموقعنا!