BLOG main image
LEEEJONG (165)
IT (53)
주관적평가 (31)
창작공간 (80)
110,042 Visitors up to today!
Today 13 hit, Yesterday 63 hit
daisy rss
tistory 티스토리 가입하기!
'인코딩'에 해당되는 글 1건
2015.05.06 20:32



 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를 넣으니 성공



이렇게쓰면 된다.

let responseString = NSString(data: data, encoding:
CFStringConvertEncodingToNSStringEncoding( 0x0422 ) )

println(" Response Data is = \(responseString)")


우왕 퇴근

BlogIcon 한글에러ㅠㅠ | 2015.07.25 03:09 신고 | PERMALINK | EDIT/DEL | REPLY
안녕하세요^^ 스위프트를 독학하고 있는 학생입니다.ㅠ
한글 문자 오류로 4시간째 씨름중인데 해결이 안되네요ㅠ

아이튠즈에서 제 앱으로 복사하여 불러온 글자와 실험을 위하 만든 같은 글자의 NSUTF8StringEncoding한 16진수 값이 다르게 나옵니다.
예를들어, 아이튠즈에서 제 앱으로 복사하여 불러온 '사자'라는 단어를 NSUTF8StringEncoding한 16진수 값은 e18489e1 85a1e184 8ce185a1 인데,
엑스코드에서 실험을 위해 임의로 만든 '사자'의 16진수 값은 ec82acec 9e90 입니다.

임의로 만든 '사자'는 url을 요청 하면 잘 되지만, 전자는 안됩니다.ㅠ
그런데 UTF-8 16진수 값을 한글로 변환해주는 사이트에서는 전자가 '사자'로 나오가 후자는 아무것도 나타나지 않습니다ㅠ

해결 방법이 없을까요ㅠㅠ
BlogIcon 리쫑v | 2015.07.25 11:38 신고 | PERMALINK | EDIT/DEL
iTUnes에서 스트링을 읽어온다
-> 그 스트링으로 URL을 만든다 (ex: 사자.jpg)
-> 그거로 웹요청을 한다

뭐 이런과정인가요?

iTunes에서 가져온 스트링이 어떤 엔코딩인지 알아야 도움을 드릴것같네요
BlogIcon 한글에러ㅠㅠ | 2015.07.25 15:14 신고 | PERMALINK | EDIT/DEL
답글 감사합니다^^ 리쫑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이 아니라는 결론이 나오는데, 전문지식이 없다보니 이 부분을 어떻게 해결해야할지 모르겠네요ㅠ
BlogIcon 한글에러ㅠㅠ | 2015.07.25 15:14 신고 | PERMALINK | EDIT/DEL | REPLY
답글 감사합니다^^
리쫑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.10.02 16:45 신고 | PERMALINK | EDIT/DEL | REPLY
삽질할뻔하다가 한번에 검색해서 도움 얻고 갑니다. 오늘도 수고하세요.
rladudclf | 2016.02.25 13:59 신고 | PERMALINK | EDIT/DEL | REPLY
감사합니다

제인생 삽질시간을 줄여주셨습니다!!
BlogIcon 리쫑v | 2016.03.11 10:35 신고 | PERMALINK | EDIT/DEL | REPLY
My pleasure
yomann | 2018.02.20 12:21 신고 | PERMALINK | EDIT/DEL | REPLY
감사루
Name
Password
Homepage
Secret
prev"" #1 next

티스토리 툴바