【Swift】EUC-JPでURLエンコーディングする
はじめに
クエリを含むURLを作成したい時には、URLエンコーディングを行う必要があると思います。
EUC-JPでエンコードする記事はあまり見かけないのでまとめます。(今どき、EUC-JP使っているサーバーなんてほぼないと思いますが。。。)
ご参考になればと思います!
実装してみる
今回は String の Extension で実装します。
import Foundation
extension String {
var encodedByEUCJP: String {
// エンコーディングしない文字列をキャラクタセットとして定義
let allowedCharacters = CharacterSet(charactersIn: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~")
// エンコーディングを定義する
let eucjpEncoding = String.Encoding(rawValue:CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(CFStringEncodings.EUC_JP.rawValue)))
// Data型にする
let data = self.data(using: eucjpEncoding, allowLossyConversion: true) ?? Data()
// URLエンコードしていく
let urlEncoded = data.map { byte -> String in
if allowedCharacters.contains(UnicodeScalar(byte)) {
return String(UnicodeScalar(byte))
} else if byte == UInt8(ascii: " ") {
return "+"
} else {
return String(format: "%%%02X", byte)
}
}.joined()
return urlEncoded
}
}
試してみる
無事、EUC-JPでURLエンコーディングできました!
print("テスト".encodedByEUCJP) // %A5%C6%A5%B9%A5%C8
Author And Source
この問題について(【Swift】EUC-JPでURLエンコーディングする), 我々は、より多くの情報をここで見つけました https://qiita.com/yusinoue1008/items/06f1ba70c12e2f4d2aa4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .