web-dev-qa-db-ja.com

Swiftコードを使用してURLをエンコードする

アラビア語でURLを送信する必要があるため、URLに配置する前にエンコードする必要があります。 Swiftコードを使用しています。

以下は私が本当に必要なものの例です

var s = "www.example.com/السلام عليكم"

let url = NSURL(string : s)

つまり、単語(السلامعليكم)は、私が送信したいアラビア文字です。

17
inanva

Swift 2.

let urlwithPercentEscapes = myurlstring.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet())

Swift

let urlwithPercentEscapes = myurlstring.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
30
yarlg

改善するには @ Druvaの答え プロジェクトのどこかに拡張を作成する

Swift 2.0

extension String
{   
    func encodeUrl() -> String
    {
        return self.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet())
    }
func decodeUrl() -> String
    {
        return self.stringByRemovingPercentEncoding
    }

}

Swift 3.0

 extension String
    {   
        func encodeUrl() -> String
        {
            return self.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
        }
    func decodeUrl() -> String
        {
            return self.stringByRemovingPercentEncoding
        }

    }
10
Vyacheslav

作成したとおりにURLをエンコードする必要があります。あなたはその文字列メソッドでそれを行うことができます:

stringByAddingPercentEscapesUsingEncoding(NSStringEncoding)

したがって、コードは次のようになります。

var s = "www.example.com/السلام عليكم"
// you may add check before force unwrapping
let url = NSURL(string : s.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
6
Vasily

Swift 4この方法で解決した同じ問題に直面します

extension String { 
var fixedArabicURL: String?  {
       return self.addingPercentEncoding(withAllowedCharacters: CharacterSet.alphanumerics
           .union(CharacterSet.urlPathAllowed)
           .union(CharacterSet.urlHostAllowed))
   } }
1
Amr AbdelWahab

この文字列には特殊文字が含まれているため、エンコードする必要があります。

var s = "www.example.com/السلام عليكم"
let encodedLink = s.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)
let encodedURL = NSURL(string: encodedLink!)! as URL

ここで、encodedURLは最終的なURLです

1
Gary G