Skip to content

Commit

Permalink
feat: 增加 http 中文链接utf8转码初始化
Browse files Browse the repository at this point in the history
  • Loading branch information
937447974 committed Jul 7, 2020
1 parent db4cbd5 commit a55e1c1
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 16 deletions.
11 changes: 11 additions & 0 deletions YJCocoa/Classes/AppFrameworks/Foundation/Extension/StringExt.swift
Expand Up @@ -45,4 +45,15 @@ public extension String {
return (self as NSString).replacingCharacters(in: range, with: replacement)
}

/// encode编码
func encode() -> String {
let characters = CharacterSet(charactersIn: ":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`").inverted
return self.addingPercentEncoding(withAllowedCharacters: characters) ?? ""
}

/// decode解码
func decode() -> String {
return self.removingPercentEncoding ?? ""
}

}
Expand Up @@ -13,6 +13,12 @@ import UIKit

public extension URL {

/// http 中文链接utf8转码初始化
static func utf8(_ string: String) -> URL? {
guard let data = string.data(using: .utf8) else { return URL(string: string) }
return URL(dataRepresentation: data, relativeTo: nil)
}

/// 文件类型
var fileExtension: String? {
guard self.pathExtension == "" else {
Expand Down
19 changes: 3 additions & 16 deletions YJCocoa/Classes/AppFrameworks/Foundation/URL/YJURL.swift
Expand Up @@ -11,17 +11,6 @@

import UIKit

/// URLEncode编码
public func YJURLEncode(_ str: String) -> String {
let characters = CharacterSet(charactersIn: ":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`").inverted
return str.addingPercentEncoding(withAllowedCharacters: characters) ?? ""
}

/// URLEncode解码
public func YJURLDecode(_ str: String?) -> String {
return str?.removingPercentEncoding ?? ""
}

/// http 参数解析与组装
@objcMembers
public class YJURL: NSObject {
Expand All @@ -35,10 +24,8 @@ public class YJURL: NSObject {
public static func assemblyParams(_ url: String?, params: Dictionary<String, Any>, encode: Bool) -> String {
var result = ""
for (key, var value) in params {
if value is String {
if encode {
value = YJURLEncode(value as! String)
}
if encode, let str = value as? String {
value = str.encode()
}
result += "&\(key)=\(value)"
}
Expand Down Expand Up @@ -70,7 +57,7 @@ public class YJURL: NSObject {
let keyValue = item.components(separatedBy: "=")
let key = keyValue[0]
let value = keyValue.count == 2 ? keyValue[1] : ""
result[key] = decode ? YJURLDecode(value) : ""
result[key] = decode ? value.decode() : ""
}
return result
}
Expand Down

0 comments on commit a55e1c1

Please sign in to comment.