> ## Documentation Index
> Fetch the complete documentation index at: https://docs.x.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 매개변수 퍼센트 인코딩

> X API 요청의 OAuth 1.0a 매개변수에 RFC 3986 퍼센트 인코딩을 적용하며, 예약 문자에 대한 규칙과 URL 인코딩 예시가 포함되어 있습니다.

export const Button = ({href, children}) => {
  return <div className="not-prose group">
    <a href={href}>
      <button className="flex items-center space-x-2.5 py-1 px-4 bg-primary-dark dark:bg-white text-white dark:text-gray-950 rounded-full group-hover:opacity-[0.9] font-medium">
        <span>
          {children}
        </span>
        <svg width="3" height="24" viewBox="0 -9 3 24" class="h-6 rotate-0 overflow-visible"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg>
      </button>
    </a>
  </div>;
};

### 매개변수 퍼센트 인코딩

X API의 일부, 특히 OAuth 서명을 다루는 부분은 [RFC 3986, Section 2.1](http://tools.ietf.org/html/rfc3986#section-2.1)에 따라 문자열을 인코딩해야 합니다. URL 인코딩 알고리즘의 많은 구현이 RFC 3986과 완전히 호환되지 않기 때문에 잘못된 인코딩은 많은 OAuth 서명 오류의 원인입니다. 이러한 이유로 사용할 정확한 서명 알고리즘이 이 페이지에서 다루어집니다.

이 페이지에서는 [RFC 3986, Section 2.1](http://tools.ietf.org/html/rfc3986#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                                                                                                                                 |

**2b단계: 바이트가 위 표에 나열되지 않은 경우 계속 진행합니다.** 다른 모든 값은 인코딩되어야 합니다. **2a단계: 바이트가 위 표에 나열되어 있으면 DST에 복사하고 1단계로 돌아갑니다.** 위 표에 나열된 문자는 이스케이프할 필요가 없으므로 바이트를 직접 복사하기만 하면 됩니다.

**3단계: DST에 '%' 문자를 씁니다.** 퍼센트 문자 '%'(또는 16진수로 0x25, 2진수로 00100101)는 다음 두 바이트가 인코딩된 바이트를 나타낼 것임을 나타냅니다.

**4단계: 현재 바이트의 대문자 ASCII 인코딩된 16진수 값을 나타내는 두 문자를 DST에 씁니다.** 이는 다소 혼란스러울 수 있으므로 예를 들어 설명하겠습니다. 현재 바이트가 0xE6(이진수로 11100110)라고 가정합시다. 이는 'æ'의 UTF-8 인코딩된 값에 해당합니다. 이 값을 인코딩하려면 'E' 문자(위 표에서 0x45)와 그 다음 '6' 문자(0x36)를 DST에 씁니다. 마지막에 쓴 세 문자는 "%E6"이어야 합니다. A, B, C, D, E 또는 F와 같은 문자를 쓸 때는 대문자를 사용해야 합니다.

**5단계: 1단계로 돌아갑니다.** SRC의 전체가 DST로 복사될 때까지 계속 진행합니다.

#### 예시

다음 예시는 자신의 코드 출력과 비교하는 데 도움이 될 수 있습니다. 차이가 있으면 오류로 간주해야 합니다. 공백이 "+" 문자로 인코딩되는 것은 잘못된 인코딩의 예입니다.

| 원본 문자열             | 인코딩된 문자열                    |
| :----------------- | :-------------------------- |
| 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                   |
