2009-03-30 23 views
5

Một số yêu cầu http của tôi có 'khoảng trắng' trong URL, nhưng nó không được iPhone nhận diện. Tôi phải thay đổi 'không gian' thành '% 20' bất cứ khi nào có 'không gian' trong url. Bây giờ tôi phải gửi một tin nhắn được gõ bởi người dùng đến máy chủ và nó có thể có nhiều "khoảng trống" như người dùng thích. Có vẻ như tôi phải thay thế tất cả. (StringByReplacingOccurrencesOfString)Câu hỏi về ký tự NSString không hợp lệ trong URL trên iPhone

Chuyển đổi 'không gian' thành '% 20' là điều tôi thỉnh thoảng tìm thấy. Câu hỏi của tôi là những nhân vật nào khác trong NSString không thể được sử dụng thẳng bởi url trên iPhone?

Trả lời

19

Tôi nghĩ rằng đây là một phương pháp tốt hơn:

NSString* escapedUrl = [originalUrl 
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

Nếu bạn muốn hiểu cách mã hóa URL hoạt động, hãy nhìn vào URL này.

1

Xem RFC 2396 để biết chi tiết đầy đủ về đẫm máu. Các nhân vật sau đây phải được thoát:

 
Control characters (ASCII 00-1F and 7F) 
Space 
< 
> 
# 
% 
" 

các ký tự sau là không khôn ngoan khi sử dụng mà không cần thoát ra bởi vì một số cổng và đại lý vận tải khác được biết là đôi khi sửa đổi các nhân vật như vậy, hoặc chúng được sử dụng như delimiters:

{ } | \^[ ] `