2013-05-06 2 views
0

Мне сложно свести NSURL к работе, когда я создаю финальную строку перед преобразованием в URL, она добавляет ненужный символ в конец строки, почему это происходит и как я могу ее исправить?stringByAddingPercentEscapesUsingEncoding добавляет неожиданные символы?

Вот мой код:

NSString *remotepathstring = [[NSString alloc] init]; 
remotepathstring=newdata.remotepath; 
NSLog(@"remotepathstring = %@",remotepathstring); 

NSString *remotepathstringwithescapes = [remotepathstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSLog(@"remotepathstring = %@",remotepathstringwithescapes); 

remotepathURL =[NSURL URLWithString:remotepathstringwithescapes]; 
NSLog(@"RemotePathUrl=%@",remotepathURL); 

Вход выходы следующим образом:

"remotepathstring = http://nalahandthepinktiger.com/wp-content/uploads/nalah-sheet-5.pdf‎" 

"remotepathstring = http://nalahandthepinktiger.com/wp-content/uploads/nalah-sheet-5.pdf%E2%80%8E" 

"RemotePathUrl=http://nalahandthepinktiger.com/wp-content/uploads/nalah-sheet-5.pdf%E2%80%8E" 

ответ

0

Последовательность %E2%80%8E является Unicode LEFT-TO-RIGHT MARK. Это присутствует в вашем оригинале remotepathstring, но невидимо при печати через NSLog.

Вопрос будет: как newdata.remotepath заселяться в первую очередь? Где-то вдоль линии кажется, что вам нужно выполнить некоторую дополнительную очистку входных строк, чтобы вычеркнуть такой символ.

Не связанный с основным вопросом, казалось бы, вы новичок в Objective-C. Этот код является излишним и расточительно:

NSString *remotepathstring = [[NSString alloc] init]; 
remotepathstring=newdata.remotepath; 

Вы создаете строку, только немедленно выбросить и заменить его другим. Если вы не используете ARC, у этого есть дополнительная проблема утечки! Вместо того, чтобы сделать:

NSString *remotepathstring = newdata.remotepath; 
+0

newdata.remotepath заполняется из базы данных SQLite следующим образом: 'newdata.remotepath = [[NSString Alloc] initWithUTF8String: (символ *) sqlite3_column_text (улица, 1)],' – Bogiematch

+0

Тогда вам нужно для дезинфекции этих строк, когда они попадают в вашу базу данных, или на выходе –

+0

есть рекомендуемый метод для этого? Я могу сделать это по мере их получения. – Bogiematch

Смежные вопросы