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에 따라 라이센스가 부여됩니다.