2013-12-20 2 views
0

저는 Objective-C을 처음 사용합니다. 여기서는 stringWithUTF8String 클래스 메서드를 사용했습니다. 그래서, 애플 개발자 도서관에서 방법을 검색하고 나는이 문장stringWithUTF8String은 무엇이며 어떻게 작동합니까?

에 온 UTF8 인코딩 지정된 바이트 C 배열에서 데이터를 복사하여 만든 문자열을 반환합니다.

독서 후에 나는 문장이 말하고있는 단서가 하나도 없습니다.

사과 개발자 라이브러리를 읽기가 어렵다는 것을 알고 있습니다. 누군가 방법의 응용 프로그램에 대한 간단한 코드의 샘플을 제공 할 수 있습니까?

+0

C "배열"(잘하면 * "공통 C 문자열"을 의미 함)과 UTF8 문자열 사이에 큰 차이가 있습니다. UTF8 인코딩에 익숙합니까? – usr2564301

+0

@Jongware 아니요. 저는이 모든 것들에 정말 새로운 것이므로 지금이 방법과 혼동하고 있습니다. – user3090658

+0

유니 코드에 익숙하지 않은 경우 http : //www.joelonsoftware를 읽으십시오.com/articles/Unicode.html –

답변

4

.

const char* cstr = "I am a c string"; 
NSString* str = [NSString stringWithUTF8String:cstr]; 
+0

그래서 기본적으로 메서드는 C 문자열을 Objective-C 문자열로 변환하는 것입니까? – user3090658

+1

예. 메서드 이름의 utf8은 메서드가 ascii의 일부가 아닌 특수 문자 (예 : 러시아어, 중국어, 일본어 또는 한국어 chracters 또는 유럽 언어의 특수 문자 인 독일어 ä, ö 및 ü와 같은 특수 문자를 발견하면이 대화를하는 동안 , 그 다음에는 C 문자열의 utf8로 인코딩됩니다). ascii 문자 (첫 번째 테이블은 http://www.asciitable.com/)에서는 c 문자열이 utf8로 인코딩되지 않고 현재 로케일로 인코딩 된 경우에도 작동합니다. – Kaiserludi

+0

당신은 내가 유니 코드 인코딩과 utf - 8 물건의 기초를 알아야한다고 생각하니? – user3090658

2
NSString *s = [NSString stringWithUTF8String:"Long dash symbol \xe2\x80\x94"]; 
NSLog(@"%@",s); 

UTF8로 인코딩 된 문자열은 C의 바이트 배열로 처리되므로 문자열로 변환하려면이 방법을 사용할 수 있습니다.

+0

이 메서드는 C 문자열을 Objective-C 문자열로 변환하는 것을 의미합니까? – user3090658

+0

예. 또한 인코딩을 허용하는'stringWithCString'을 볼 수있다. –

+0

예. 그러나 C 문자열이 유효한 UTF8 인코딩 된 문자열 인 경우에만 해당됩니다. – uchuugaka

1

설명서가 명확합니다. C 유형에서 Objective C 객체를 만들 수 있습니다. 즉, C 배열을 NSString (Objective C 객체)으로 변형 할 수 있습니다. 당신은 그것을 할 수있는이 같은 예는하고있는 NSData 객체 : 그것은 단순히 UTF8 인코딩 (http://en.wikipedia.org/wiki/UTF8) C 문자열 (숯불 *)에서 코코아는 NSString을 생성

NSDAta *data = .... 

NSString *myString = [NSString stringWithUTF8String:[data bytes]]; 
+0

미안하지만 이제 Objective-C를 배우고 있습니다. 이 간단한 설명을 좀 해 주시겠습니까? 설명서가 명확하지만 다양한 프로그래밍 전문 용어로 이해하기는 어렵습니다. – user3090658

+0

죄송합니다. 해당 지역의 일부입니다. Objective-C는 C의 수퍼 세트입니다. 또한 거대한 세트가 포함되어 있습니다. 때때로 잃어버린 느낌이들 것입니다. 수십 년의 역사가있는 깊은 것들이 많이 있습니다. – uchuugaka

1

NSString이 지원하는 풍부함과 복잡함에 시달리는 것처럼 들립니다. 그것은 깊은 주제입니다.

모든 문자열은 실제로는 일종의 배열로 저장되며 배열 요소 값을 문자에 매핑하는 인코딩이 있습니다.

NSString은 수동으로 잘 배우고 잘 할 수 없기 때문에 대부분이 시간을 숨 깁니다. 또한 대부분의 시간에 대해 생각할 필요가없고 다른 것들을 할 필요가 없다는 점이 더 흥미 롭습니다.

그러나 NSString은 내부적으로 Unichars 배열을 유지합니다. NSString이 아닌 외부 소스에서 다른 문자열로 문자열을 만들 때 인코딩을 알아야합니다. 그렇지 않으면 쓰레기가 밖으로 나옵니다.

UTF8은 실제로 강력하고 바이트 순서와 같은 것에 민감하지 않으므로 웹 및 XML에서 폭넓게 채택되고 있습니다. 모든 상황에 이상적이지 않으므로 플랫폼 기본 프레임 워크는 특정 최적화에 UTF16 또는 32를 사용하는 경향이 있습니다.

파일의 인코딩이라고 할 수 있습니다. (끔찍한 일반화), 바이트 순서 문제가있는 UTF16 및 32는 하드웨어 관련 처리 성능의 인코딩입니다. (또 다른 나쁜 일반화)

위키 피 디아에는 특히 유니 코드 인코딩과 UTF8에 대한 유용한 정보가 있습니다.

모험을 시작하기에 좋은 장소입니다.

관련 문제