티스토리 뷰
0x0422
웹서버가 보낼때 euc-kr로 보내는데
ios에서 NSString으로 못받아온다.
NSString(data:data, encoding: NSUtf8StringEncoding)
이거로가져오면 디코딩이 안된다.
그래서 삽질하기를 수시간.
Reference를 보니 NSStringEncoding은 기존 CFString Encoding type으로 대체가 가능하다고 한다.
CFStringConvertEncodingToNSStringEncoding()이란 함수를 찾았다.
SWIFT
func CFStringConvertEncodingToNSStringEncoding( _ encoding: CFStringEncoding) -> UInt
https://developer.apple.com/library/ios/documentation/CoreFoundation/Reference/CFStringRef/#//apple_ref/c/tdef/CFStringEncoding
여기서 대충 CFString에서 기본으로 지원하던 인코딩들을 볼수있고
https://developer.apple.com/library/ios/documentation/CoreFoundation/Reference/CFStringRef/#//apple_ref/doc/constant_group/External_String_Encodings
여기서 External 인코딩들을 볼수있다.
코리안은 총 두개가 보이는데
kCFStringEncodingMacKorean = 3,
kCFStringEncodingDOSKorean = 0x0422,
요래 두개가 보인다.
위에거는 3을 써도 안되길래 아래 0x0422를 넣으니 성공
우왕 퇴근
'IT > Android iOS' 카테고리의 다른 글
Node.js를 이용한 APNS+FCM 푸시서버 만들기 (0) | 2017.01.23 |
---|---|
[iOS/Swift]네이버 아이디로 로그인 붙이기 (6) | 2015.08.24 |
how to decode EUC-KR to NSString (0) | 2015.05.06 |
iOS에서 EUC-KR NSString으로 디코딩하기 (8) | 2015.05.06 |
Stanford 키다리 흰머리아저씨의 Swift (1-3) (0) | 2015.04.30 |
액티비티 - 뷰 -> 액티비티 - 프래그먼트 - 뷰 (펌) (0) | 2015.02.13 |
- TAG
- 0x0422, cfstring, cfstringconvert, encodingtonsstring, EUC-KR, ios, kcfstringencoding, nsstring, swift, 디코딩, 인코딩, 한글
-
한글에러ㅠㅠ 안녕하세요^^ 스위프트를 독학하고 있는 학생입니다.ㅠ
한글 문자 오류로 4시간째 씨름중인데 해결이 안되네요ㅠ
아이튠즈에서 제 앱으로 복사하여 불러온 글자와 실험을 위하 만든 같은 글자의 NSUTF8StringEncoding한 16진수 값이 다르게 나옵니다.
예를들어, 아이튠즈에서 제 앱으로 복사하여 불러온 '사자'라는 단어를 NSUTF8StringEncoding한 16진수 값은 e18489e1 85a1e184 8ce185a1 인데,
엑스코드에서 실험을 위해 임의로 만든 '사자'의 16진수 값은 ec82acec 9e90 입니다.
임의로 만든 '사자'는 url을 요청 하면 잘 되지만, 전자는 안됩니다.ㅠ
그런데 UTF-8 16진수 값을 한글로 변환해주는 사이트에서는 전자가 '사자'로 나오가 후자는 아무것도 나타나지 않습니다ㅠ
해결 방법이 없을까요ㅠㅠ 2015.07.25 03:09 -
리쫑v iTUnes에서 스트링을 읽어온다
-> 그 스트링으로 URL을 만든다 (ex: 사자.jpg)
-> 그거로 웹요청을 한다
뭐 이런과정인가요?
iTunes에서 가져온 스트링이 어떤 엔코딩인지 알아야 도움을 드릴것같네요 2015.07.25 11:38 신고 -
한글에러ㅠㅠ 답글 감사합니다^^ 리쫑v님께서 말씀하신 플로우가 맞습니다. 아이튠즈로 복사한 파일의 파일명으로 url을 만들어서 웹에 요청하는 구조입니다. 그런데 예를들어 사자.jpg를 txt파일에서 불러와서 요청하면 잘 되는데, (사자.jpg란 문자열이 저장된 txt파일) 아이튠즈에 복사한 사자.jpg의 파일명인 사자.jpg를 스트링으로 불러오면 웹요청이 되지 않습니다. 그래서 utf8stringencoding한 사자.jpg의 데이터 값을 println으로 찍어봤더니 txt파일에서 불러온 사자.jpg와 엑스코드 내에서 임의로 만든 "사자.jpg"라는 스트링의 데이터 값은 같은데, 아이튠즈로 복사한 파일에서 불러온 파일명 사자.jpg의 16진수 값은 앞의 두 가지 것과 다르게 나옵니다. (모두 utf8stringencoding으로 nsdata변수에 할당했습니다.) 아이튠즈에 복사하여 불러온 파일명, 사자의 16진수 값은 e18489e1 85a1e184 8ce185a1으로 출력되고, 나머지는 ec82acec 9e90으로 출력됩니다. 그리고 ec82acec 9e90값일 때는 웹요청이 잘 되지만 e18489e1 85a1e184 8ce185a1값일 때는 요청이 되지 않습니다. 그렇다면 스트링이 생성될 때의 인코딩(?) 방식이 다르다는 이야기인 것 같은데, 즉 맥에서 사자.jpg라는 파일명을 만들 때 한글 인코딩 방식이 utf8이 아니라는 결론이 나오는데, 전문지식이 없다보니 이 부분을 어떻게 해결해야할지 모르겠네요ㅠ 2015.07.25 15:14
-
한글에러ㅠㅠ 답글 감사합니다^^
리쫑v님께서 말씀하신 플로우가 맞습니다. 아이튠즈로 복사한 파일의 파일명으로 url을 만들어서 웹에 요청하는 구조입니다.
그런데 예를들어 사자.jpg를 txt파일에서 불러와서 요청하면 잘 되는데, (사자.jpg란 문자열이 저장된 txt파일)
아이튠즈에 복사한 사자.jpg의 파일명인 사자.jpg를 스트링으로 불러오면 웹요청이 되지 않습니다.
그래서 utf8stringencoding한 사자.jpg의 데이터 값을 println으로 찍어봤더니 txt파일에서 불러온 사자.jpg와 엑스코드 내에서 임의로 만든 "사자.jpg"라는 스트링의 데이터 값은 같은데, 아이튠즈로 복사한 파일에서 불러온 파일명 사자.jpg의 16진수 값은 앞의 두 가지 것과 다르게 나옵니다. (모두 utf8stringencoding으로 nsdata변수에 할당했습니다.)
아이튠즈에 복사하여 불러온 파일명, 사자의 16진수 값은 e18489e1 85a1e184 8ce185a1으로 출력되고, 나머지는 ec82acec 9e90으로 출력됩니다.
그리고 ec82acec 9e90값일 때는 웹요청이 잘 되지만 e18489e1 85a1e184 8ce185a1값일 때는 요청이 되지 않습니다.
그렇다면 스트링이 생성될 때의 인코딩(?) 방식이 다르다는 이야기인 것 같은데, 즉 맥에서 사자.jpg라는 파일명을 만들 때 한글 인코딩 방식이 utf8이 아니라는 결론이 나오는데, 전문지식이 없다보니 이 부분을 어떻게 해결해야할지 모르겠네요ㅠ 2015.07.25 15:14 -
좋은정보감사합니다. 삽질할뻔하다가 한번에 검색해서 도움 얻고 갑니다. 오늘도 수고하세요. 2015.10.02 16:45
-
rladudclf 감사합니다
제인생 삽질시간을 줄여주셨습니다!! 2016.02.25 13:59 -
리쫑v My pleasure 2016.03.11 10:35 신고
-
yomann 감사루 2018.02.20 12:21
- Total
- 227,209
- Today
- 82
- Yesterday
- 91
- 이창동
- 칠레와인
- swift
- 개발자취업
- 박찬욱
- 하 준 숴이
- 0x0422
- 하포원
- JS
- Java Developer Day
- happo-one
- 태그를 입력해 주세요.
- 개발자
- 취준생
- 존슨 황
- Octane S2
- 컴공
- 일리네어
- 컴퓨터공학과
- 감정수업
- 깝스 1회
- 언프리티 랩스타
- nsstring
- 취업
- 연구개발직
- 존슨황
- 송강호
- 코빅
- 나가노 스키여행
- cfstring