본문 바로가기
iOS

[iOS] String 한글(EUC-KR) 인코딩

by Dokon Jang 2024. 5. 8.
반응형

대부분의 우리나라 사이트는 인코딩 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
    }

  위의 함수는 아래의 포스팅에서 발취했습니다.

https://devsc.tistory.com/78

 

iOS) EUC-KR 인코딩 하기

EUC-KR 인코딩 하기 설명 iOS에서 EUC-KR로 인코딩 하는 문제가 프로젝트를 진행하면서 오랜 시간동안 Warning을 발생시켜서 눈에 가시처럼 보였는데 해결방안을 찾아서 포스팅 하게 되었습니다. 일단

devsc.tistory.com

 

반응형

댓글