English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

حل مشكلة مشكلة الترميز غير الصحيح للـ URL الصينية في iOS

حل مشكلة 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]; 

شكرًا على القراءة، آمل أن تكون قد ساعدتكم، شكرًا لدعمكم لموقعنا!

سيكون لك