2014-06-12 2 views
2

내 응용 프로그램에서 사용하려는 일부 유니 코드 배열이 있습니다. 사용하기 위해 제대로 탈출하는 데 문제가 있습니다. 예를 들어iOS 용 이스케이프 유니 코드 문자

이 유니 코드 순서 :

난 내가 얻을 수있는 온라인 도구를 사용하여 탈출하는 경우 : \ ud83c \ udd70

그러나 물론 이것은 컴파일러 당 잘못된 순서입니다 :

var str = NSString.stringWithUTF8String("\ud83c\udd70") 

내가 또한 경우이 : 나는 오류가

var str = NSString.stringWithUTF8String("\ud83c") 

"잘못된 유니 코드 사우스 캐롤라이나

&#x1D552 

내 머리를 정리하기 위해 고군분투 : 나는 다음과 같은 순서를 참조이 웹 사이트의 소스를 보면 http://www.panix.com/~eli/unicode/convert.cgi?text=abcdefghijklmnopqrstuvwxyz

: ALAR 글꼴 ""

나는이 유니 코드를 사용하기 위해 노력하고있어 " 유니 코드를 이스케이프 처리하는 "적절한"방법은 무엇입니까?

그리고 단순히 iOS에서 작동하도록하는 방법을 찾아야합니다.

의견이 있으십니까?

+0

var에 str을 = \ uD83D \ uDD70 "'? – sanz

+0

제대로 변환하는 방법? 내가 방법을 배우고 싶은 것이 유효하고 무엇을 잘못 알 수있는 방법이 있나요 유니 코드 문자를 올바르게 변환하십시오 - 이유는 무엇입니까? – Spentak

답변

1

신속한 초기 베타입니다 : 당신은 또한 당신의 문자열로 문자 자체를 붙여 넣을 수 있습니다

var str = "\U0001F170" // returns "" 

대신, 팔이 받아들이는 \UXXXXXXXX 순서 (U 자본주의)를 사용 여러 가지면에서 깨졌습니다. 이 문제는 신속한 버그입니다.

모두 오브젝티브 C에 의해 허용되는 UTF16 문자를 분해

enter image description here

let ringAboveA:  String = "\u0041\u030A" is Å and is accepted 
let negativeSquaredA: String = "\uD83D\uDD70" is and produces an error 
. UTF32 코드 포인트를 얻을 중 하나 OSX 문자 뷰어 또는 코드 사용 :

NSLog(@"utf32: %@", [@"" dataUsingEncoding:NSUTF32BigEndianStringEncoding]); 

UTF32 : < 0001f170>

을 차이는 합성 캐릭터가 1

주 평면에 점이다

Apple 메뉴에서 Character Viewer를 얻으려면 "시스템 환경 설정", "키보드", "키보드"탭으로 이동하여 "메뉴 막대에 키보드보기 & 캐릭터 뷰어"확인란을 선택하십시오. "Character View"항목은 날짜 왼쪽의 메뉴 막대에 있습니다.오른쪽 문자 (제어) 검색 결과를 복사 즐겨 찾기에 문자를 클릭를 입력 한 후

enter image description here

.

복사 정보 :

NEGATIVE SQUARED 라틴 자본 문자 A
유니 코드 : U + 1F170 (U + D83C의 U + DD70), UTF-8 : F0 9 층 더 나은 아직 85 B0

: 추가 유니 코드 왼쪽 목록에서 선택하십시오. 당신은 '할 때 발생하는
enter image description here

+0

HI I Conve가 필요합니다. rt 영어 이외의 문자를 유니 코드 (ud100 또는 fh123 ..)로 바꾸는 방법, 신속한 방법 – Sanju

+0

리터럴에서는 '\ ud100'을 사용하거나 뷰어에서'd 1 0 0'을 입력하고 get을 입력하십시오. 주석이 서로 게이트 쌍인 경우 @nathan의 응답을 참조하십시오. 나는 이해하지 못한다 : 코멘트에'fh123..'. – zaph

+0

나는 중국어 텍스트를 가지고 있는데, 나는 \ u2345와 같은 유니 코드 텍스트를 만들 필요가있다. 그리고 서버에 보내면 어떻게 될까? – Sanju

2

\ud83c\udd70은 유니 코드 문자 (U + 1F170)를 인코딩하는 UTF-16 서로 게이트 쌍입니다. 빠른 문자열 리터럴은 UTF-16을 사용하지 않으므로 이스케이프 시퀀스가 ​​의미가 없습니다. 그러나 1F170에는 5 자리 숫자가 있으므로 \uXXXX 이스케이프 시퀀스 (4 자리의 16 진수 만 허용)를 사용할 수 없습니다. 이다,

var str = "" // returns "" 
+0

Nathan - 8 자리 버전은 어떻게 계산 했습니까? - 직접 변환 할 수 있습니다. – Spentak

+0

@Spentak 문자 뷰어를 사용했습니다. 문자를 검색 필드에 입력하고 결과를 클릭하면 오른쪽에있는 막대에 유니 코드 코드 포인트가 표시됩니다 ([screenshot] (http://oi58.tinypic.com/2ry6jpi.jpg)) – nathan

+0

@nathan 감사합니다 캐릭터 뷰어 팁! – zaph