오류 정정:iOS 판단 중 텍스트

오늘 bug 에 부 딪 혔 습 니 다.최종 적 으로 포 지 셔 닝 된 문 제 는 동료 가 인터넷 에 떠 도 는 코드 를 사용 하여 판단 오류 로 인 한 것 입 니 다.많은 사람들의 블 로그 에서(http://blog.csdn.net/a416863220/article/details/41893339, http://www.jianshu.com/p/9bf1a6d9e967)이러한 코드 를 사용 하여 문자열 의 길 이 를 계산 하거나 문자 가 중국어 인지 아 닌 지 판단 합 니 다.
//           。 
-(BOOL)isChinese:(NSString*)str  
{  
    int strlength = 0;  
    char* p = (char*)[str cStringUsingEncoding:NSUnicodeStringEncoding];  
    for (int i=0 ; i
- (int)convertToInt:(NSString*)strtemp
{
    int strlength = 0;
    char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];
    for (int i=0 ; i

평소 에는 아무런 문제 가 없 지만 입력 한 string 이 중문 자'1'일 때isChinese되 돌아 오 는 것 은 false 이 고convertToInt되 돌아 오 는 것 은 1.정지점 입 니 다.입력 이'1'일 때 포인터 p 에 대응 하 는*p 는 Xcode 에서'2'입 니 다.대응 하 는 것 은"\x8cN"입 니 다.그러나 실제"2"에 대응 하 는 유 니 코드 인 코딩 은"\u4e8c"입 니 다.iOSNSUnicodeStringEncoding가"1"을 인 코딩 할 때 char 형 포인터 로 풀 었 을 것 으로 추정 되 는 내용 은0000입 니 다.구체 적 인 상황 을 아 는 친구 가 있 으 면 알려 주 십시오.감사합니다.
PS:정확 한 판단 코드 를 첨부 하여 네트워크 에서 발췌 하여 출처 를 알 수 없습니다.
- (NSInteger)countWordWithStr:(NSString *)s
{
  NSInteger i,n=[s length],l=0,a=0,b=0;
  unichar c;
  for(i=0;i

좋은 웹페이지 즐겨찾기