objective - c 와 js 사이 에 중국어 난 코드 전달
                                            
 5805 단어  Objective-C
                    
그 중에서 방금 만난 것 은 둘 사이 에 중국어 문 자 를 전달 하고 특수 문 자 를 가 진 URL 문자열 입 니 다.
상세 한 소 개 는 많이 하지 않 을 것 이 고, 나중에 나중에 다시 총 결 을 할 것 이다.
oc 는 js 에 중국 어 를 전달 합 니 다. 처음에 문 자 를 UTF - 8 로 인 코딩 해 야 한다 고 생각 했 지만 문제 가 해결 되 지 않 았 습 니 다.
나중에 야 알 게 되 었 습 니 다. 원래 전달 문자열 이 js 에 갔 는데 원래 의 값 을 복사 할 뿐 어 지 러 운 코드 문제 가 발생 하지 않 았 습 니 다. 문 제 는 js 가 oc 에 중국 어 를 전달 할 때 반드시 인 코딩 해 야 한 다 는 것 입 니 다.
처음에 제 가 사용 한 인 코딩 방식 은 encodeURIComponent 였 지만 OC 에 전달 되 었 고 디 코딩 된 것 은 아직도 모 르 는 문자열 이 었 습 니 다.
나중에 js 를 살 펴 보 니 인 코딩 방식 인 encodeURI 가 있어 서 기 쁘 게 성 공 했 습 니 다.
js :
var title = encodeURI('  ');
oc :
[value stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]url 에 대해 서 는 url 에 특수 문자 가 존재 할 수 있 기 때 문 입 니 다:! @ # $& *( ) = : / ; ? + ',js 쪽 에 전달 이 안 되 기 때문에 OC 쪽 에서 URL 을 인 코딩 해 야 합 니 다.
 1 + (NSString *)urlencode:(NSString *)uncodeString {
 2     NSMutableString *output = [NSMutableString string];
 3     const unsigned char *source = (const unsigned char *)[uncodeString UTF8String];
 4     int sourceLen = strlen((const char *)source);
 5     for (int i = 0; i < sourceLen; ++i) {
 6         const unsigned char thisChar = source[i];
 7         if (thisChar == ' '){
 8             [output appendString:@"+"];
 9         } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' ||
10                    (thisChar >= 'a' && thisChar <= 'z') ||
11                    (thisChar >= 'A' && thisChar <= 'Z') ||
12                    (thisChar >= '0' && thisChar <= '9')) {
13             [output appendFormat:@"%c", thisChar];
14         } else {
15             [output appendFormat:@"%%%02X", thisChar];
16         }
17     }
18     return output;
19 }js 쪽 에서 url 을 변환 해서 사용 해 야 한다 면 decodeURIComponent 방법 을 간단하게 호출 하면 원래 의 url 값 을 얻 을 수 있 습 니 다.
후속 적 으로 풍부 해 지면 사실 이곳 에는 배 울 것 이 매우 많다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PreferenceBundle에서 오른쪽 상단에 Respring 버튼을 클릭합니다.만나서 반갑습니다, Minazuki라고합니다. 프로필 이름 : Minazuki_dev Twitter : Repo : 아직 중학생이므로 말이 이상한 곳이 있습니다만 용서해 주세요… 🙏 theos (Mac이든 단품이든 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.