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

# 퍼센트 인코딩 매개변수

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>;
};

<div id="percent-encoding-parameters">
  ### 퍼센트 인코딩 매개변수
</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 인코딩 과정을 다룹니다. 이 문서와 모호하거나 상충되는 부분이 있을 경우를 대비해 해당 규격서를 참고할 것을 권장합니다.
 

<div id="encoding-a-string">
  #### 문자열 인코딩
</div>

다음 알고리즘은 문자열 SRC의 값을 바이트 단위로 그대로 복사해 문자열 DST를 만드는 방식으로 인코딩한다고 가정합니다.

**1단계: SRC에 아직 읽지 않은 바이트가 남아 있는 동안, SRC에서 다음 바이트(8비트)를 읽습니다.** 일반적으로 이것을 문자라고 보지만, 하나의 문자가 여러 바이트일 수 있는 인코딩(예: UTF-8)의 경우에는 첫 번째 바이트만 읽습니다.

**2단계: 읽은 바이트가 아래의 ASCII 값 중 하나와 일치하는지 확인합니다.** 아래 표는 가독성을 위해 여러 행으로 나뉘어 있지만, 실제로는 읽은 바이트가 어느 행에 있는지는 상관없이, 표에 존재하는지만 판단하면 됩니다.

| Name                | ASCII characters                                                                                                                 | Equivalent byte values                                                                                                                                 |
| :------------------ | :------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Digits              | ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’                                                                                 | 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39                                                                                             |
| Uppercase letters   | ‘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 |
| Lowercase letters   | ‘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 |
| Reserved characters | ‘-‘, ‘.’, ‘\_’, ‘\~’                                                                                                             | 0x2D, 0x2E, 0x5F, 0x7E                                                                                                                                 |

**2b단계: 바이트가 위 표에 나와 있지 않다면, 계속 진행합니다.** 표에 없는 다른 모든 값은 인코딩해야 합니다. **2a단계: 바이트가 위 표에 나와 있다면, 그 바이트를 DST에 복사한 뒤 1단계로 돌아갑니다.** 위 표에 있는 문자는 이스케이프할 필요가 없으므로, 해당 바이트를 그대로 복사하기만 하면 됩니다.

**3단계: 문자 ‘%’를 DST에 기록합니다.** 퍼센트 문자 ‘%’(16진수로 0x25, 2진수로 00100101)는 뒤이어 나오는 두 문자가 인코딩된 바이트를 나타낸다는 의미입니다.

**4단계: 현재 바이트의 대문자 ASCII 인코딩 16진수 값을 나타내는 두 문자를 DST에 기록합니다.** 이 부분은 약간 헷갈릴 수 있으므로 예제를 들어 보겠습니다. 현재 바이트가 0xE6(2진수로 11100110)이라고 가정합니다. 이는 ‘æ’의 UTF-8 인코딩 값에 해당합니다. 이 값을 인코딩하려면 먼저 문자 ‘E’(위 표에서 0x45)를, 그 다음에 문자 ‘6’(0x36)을 DST에 기록합니다. 마지막으로 기록된 세 문자는 “%E6”가 되어야 합니다. A, B, C, D, E 또는 F와 같은 문자를 기록하는 경우에는 반드시 대문자를 사용해야 합니다.

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

<div id="examples">
  #### 예시
</div>

다음 예시는 직접 작성한 코드의 출력과 비교하는 데 도움이 될 수 있습니다. 모든 차이는 오류로 간주해야 합니다. 공백을 “+” 문자로 인코딩하는 것은 잘못된 인코딩의 한 예입니다.

| Original string    | Encoded string              |
| :----------------- | :-------------------------- |
| 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                   |
