매개변수 퍼센트 인코딩
X API의 일부, 특히 OAuth 서명을 다루는 부분은 RFC 3986, Section 2.1에 따라 문자열을 인코딩해야 합니다. URL 인코딩 알고리즘의 많은 구현이 RFC 3986과 완전히 호환되지 않기 때문에 잘못된 인코딩은 많은 OAuth 서명 오류의 원인입니다. 이러한 이유로 사용할 정확한 서명 알고리즘이 이 페이지에서 다루어집니다. 이 페이지에서는 RFC 3986, Section 2.1에 설명된 URL 인코딩 프로세스를 다룹니다. 모호함이나 이 문서와의 충돌이 있는 경우 해당 명세를 참조하는 것이 좋습니다.문자열 인코딩
다음 알고리즘은 문자열 SRC의 값을 바이트 단위로 문자열 DST에 복사하여 인코딩한다고 가정합니다. 1단계: SRC에 읽지 않은 바이트가 있는 동안 SRC에서 다음 바이트(8비트)를 읽습니다. 일반적으로 이는 문자로 간주되지만, 문자가 두 바이트 이상일 수 있는 인코딩(예: UTF-8)의 경우 첫 번째 바이트만 읽습니다. 2단계: 읽은 바이트가 다음 ASCII 등가물 중 하나와 일치하는지 확인합니다. 다음 표는 가독성을 위해 행으로 나누어져 있지만, 특정 행이 아니라 읽은 바이트가 표에 존재하는지 여부만 확인하면 됩니다.| 이름 | ASCII 문자 | 등가 바이트 값 |
|---|---|---|
| 숫자 | ’0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ | 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 |
| 대문자 | ’A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’ | 0x41, 0x42, 0x43, 0x44, 0x45,0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51,0x52, 0x53, 0x54, 0x55, 0x56, 0x57,0x58, 0x59, 0x5A |
| 소문자 | ’a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’ | 0x61, 0x62, 0x63, 0x64, 0x65,0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B,0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71,0x72, 0x73, 0x74, 0x75, 0x76, 0x77,0x78, 0x79, 0x7A |
| 예약 문자 | ’-’, ’.’, ’_’, ’~‘ | 0x2D, 0x2E, 0x5F, 0x7E |
예시
다음 예시는 자신의 코드 출력과 비교하는 데 도움이 될 수 있습니다. 차이가 있으면 오류로 간주해야 합니다. 공백이 ”+” 문자로 인코딩되는 것은 잘못된 인코딩의 예입니다.| 원본 문자열 | 인코딩된 문자열 |
|---|---|
| Ladies + Gentlemen | Ladies%20%2B%20Gentlemen |
| An encoded string! | An%20encoded%20string%21 |
| Dogs, Cats & Mice | Dogs%2C%20Cats%20%26%20Mice |
| ☃ | %E2%98%83 |