アラビア語でURLを送信する必要があるため、URLに配置する前にエンコードする必要があります。 Swiftコードを使用しています。
以下は私が本当に必要なものの例です
var s = "www.example.com/السلام عليكم"
let url = NSURL(string : s)
つまり、単語(السلامعليكم)は、私が送信したいアラビア文字です。
Swift 2.
let urlwithPercentEscapes = myurlstring.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet())
Swift
let urlwithPercentEscapes = myurlstring.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
改善するには @ 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
}
}
作成したとおりにURLをエンコードする必要があります。あなたはその文字列メソッドでそれを行うことができます:
stringByAddingPercentEscapesUsingEncoding(NSStringEncoding)
したがって、コードは次のようになります。
var s = "www.example.com/السلام عليكم"
// you may add check before force unwrapping
let url = NSURL(string : s.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
Swift 4この方法で解決した同じ問題に直面します
extension String {
var fixedArabicURL: String? {
return self.addingPercentEncoding(withAllowedCharacters: CharacterSet.alphanumerics
.union(CharacterSet.urlPathAllowed)
.union(CharacterSet.urlHostAllowed))
} }
この文字列には特殊文字が含まれているため、エンコードする必要があります。
var s = "www.example.com/السلام عليكم"
let encodedLink = s.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)
let encodedURL = NSURL(string: encodedLink!)! as URL
ここで、encodedURLは最終的なURLです