반응형
대부분의 우리나라 사이트는 인코딩 UTF-8로 사용하고 있지만, 관공서의 사이트는 EUC-KR을 사용하는 곳이 많습니다.
관공서 사이트를 크롤링하려면 파라메터 등을 EUC-KR로 처리해야 하는데 아래의 함수로 처리하였습니다.
static func euckrEncoding(_ query: String) -> String { //EUC-KR 인코딩
let rawEncoding = CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(CFStringEncodings.EUC_KR.rawValue))
let encoding = String.Encoding(rawValue: rawEncoding)
let eucKRStringData = query.data(using: encoding) ?? Data()
let outputQuery = eucKRStringData.map {byte->String in
if byte >= UInt8(ascii: "A") && byte <= UInt8(ascii: "Z")
|| byte >= UInt8(ascii: "a") && byte <= UInt8(ascii: "z")
|| byte >= UInt8(ascii: "0") && byte <= UInt8(ascii: "9")
|| byte == UInt8(ascii: "_") || byte == UInt8(ascii: ".") || byte == UInt8(ascii: "-")
{
return String(Character(UnicodeScalar(UInt32(byte))!))
} else if byte == UInt8(ascii: " ") {
return "+"
} else {
return String(format: "%%%02X", byte)
}
}.joined()
return outputQuery
}
위의 함수는 아래의 포스팅에서 발취했습니다.
반응형
'iOS' 카테고리의 다른 글
[iOS] 스토리보드(Storyboard)에서 ImageView Tint Color 적용하기 (0) | 2024.05.09 |
---|---|
[iOS] Alamofire 한글(EUC-KR) 인코딩하기 (0) | 2024.05.08 |
[iOS] Command PhaseScriptExecution failed with a nonzero exit code (0) | 2024.05.07 |
iOS Swift TextField 클리어 버튼 시 소프트 키보드 올라오는 현상 해결방법 (0) | 2024.05.06 |
[iOS] Sandbox: rsync.samba... 오류 해결 방법 (0) | 2024.04.25 |
댓글