2012-07-09 8 views
5

Tôi nhận được URL từ máy chủ và cố gắng tải URL trong chế độ xem web. Vấn đề là url mà tôi nhận được chứa các ký tự không chuẩn. URL là:Xóa% 2520 và các ký tự không chuẩn khác khỏi URL trong obj c

https//p-r3.test.abc.com:443%2Ftablet%2Fjsp%2Fgift%2Fipad%2Fgifter%2FgitGiftList.jsp%3FregId%3D74500002%26filterBy%3DviewAll%26pageId%3DourGifty%26sort%3Dcategory%26groupBy%3Dcategory%26view%3Dlist%26categoryId%3D%26addCat%3Dcat100540004&title=re%20-&imgurl=https%3A%2F%2Fm-r3-testy.tr.com%3A443%2Ftablet%2Fimages%2Ft_Full.jpg%3Fwid%3D300%26hei%3D300. 

tôi cần phải loại bỏ những nhân vật như %2520, %2F, %3D và ký tự chuẩn không khác từ URL. Bất cứ ai cũng có ý tưởng để loại bỏ mã hóa này.
Bất kỳ trợ giúp sẽ được đánh giá

Cảm ơn

+0

Xem @Kolink câu trả lời, và nhận được đội máy chủ của bạn để sửa chữa URL rác họ đang gửi cho bạn. Bạn biết URL được mã hóa sai khi bạn thấy '% 2F' thay cho'/'cho phần thông thường của URL. –

Trả lời

7

%2520 chỉ đơn giản là một không gian đúp mã hóa. Mã hóa nó một lần và bạn nhận được %20, mã hóa nó hai lần và bạn nhận được %2520. Nó không phải là "không chuẩn", nó chỉ được viết mã kém. Về lý thuyết, không có lý do tại sao bạn không thể thay thế %2520 bằng một khoảng trắng, nhưng đối với tất cả tôi biết mã phía máy chủ là mong đợi chuỗi được mã hóa kép.

1

Dường như bạn có một url urlode() quá nhiều hoặc một urldecode() quá ít, trong mã xử lý phía máy chủ URL.

1

Tìm câu trả lời.Tôi đang xóa mã hóa bằng chức năng tích hợp sẵn của iOS. abc = [def stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

và tôi đang tải abc trong chế độ xem web. Nó hoạt động tốt. Cảm ơn tất cả các câu trả lời.

0

Để tránh nhiều mã hóa, Di chuyển bất kỳ mã hóa đầu tiên

_pdfUrl = [ _pdfUrl stringByRemovingPercentEncoding];   
    _pdfUrl = [_pdfUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];