Encoding
클라이언트에서 서버로 요청하는 리소스의 URL은 ASCII 코드의 첫 번째 128개의 문자만을 포함할 수 있습니다.
여기서 ASCII 코드에 속하지 않은 문자들은 UTF-8 방식으로 인코딩이 이루어져야 합니다.
URL 상에서 인코딩된 문자는 1바이트 단위마다 앞에 %
를 붙입니다.
사전 UTF-8 인코딩은 다음과 경우에 수행합니다.
- 표준 ASCII 코드에 포함되지 않을 경우(예: 한글)
#
,<
,>
,{
,}
,[
,]
,~
, 스페이스 중 하나인 경우/
,?
,:
,@
,&
과 같은 reserved 문자가 본래 목적 외에 사용될 경우
TIP
인코딩 없이 그대로 쓰이는 문자는 다음과 같습니다.
- 0 ~ 9
- A ~ Z, a ~ z
$
,-
,_
,.
,+
,!
,'
,(
,)
,"
,,
중 하나- reserved 문자들이 본래 목적에 맞게 사용된 경우
Unicode
지구 상에 존재하는 모든 문자(언어, 특수기호, 이모티콘 등을 포함해서)들을 모두 표현할 수 있는 일관된 코드표(character set)입니다.
UTF-8
Unicode를 컴퓨터에 저장할 수 있는 비트패턴으로 인코딩하기 위한 방법들 중 하나입니다.
가변길이 인코딩(원본 유니코드의 길이에 따라 결과값의 길이가 달라지는) 방식이라 1바이트에서 4바이트까지 길이를 가질 수 있습니다.
인코딩할 때는 아래 테이블을 참조합니다.
TIP
JS string 은 UTF-16 방식으로 인코딩되어 메모리에 저장됩니다.
ASCII Code
특정 문자를 8비트 패턴으로 인코딩하는 방식입니다.
ASCII 코드로 인코딩된 결과물은 바로 컴퓨터에 저장할 수 있는 비트패턴을 가지지만 유니코드는 컴퓨터에 저장되기 전에 먼저 인코딩이 이루어져야 한다는 점이 다릅니다.