왜 UTF-8을 쓸까?
대충 문자열 때문이라는건 알고 있었다. 호환성이 좋구나 까지만 앎.
근데 공부하며 이유를 알게 되었따!
기본적으로 문자는 1바이트 (숫자, 알파벳) 그외 문자들은 2바이트를 사용한다
문자 데이터는 컴퓨터 내부에서 2진수로 바뀌어 표현된다. 처음 만들어진 코드 체계가 아스키 코드인데 7비트(128개)를 사용한다. 하지만 실제 사용할때는 1바이트(8비트)에 맞추기 위해 왼쪽에 1비트가 추가된 형태로 사용한다. (확장된 아스키 코드라 부름)
아스키 코드는 알파벳이나 숫자 위주로 사용되기 때문에 전세계 언어를 통일할 다른 코드체계가 필요해졌다. 그래서 만들어진게 유니코드 !
유니코드에서 지원하는 인코딩 방식은 UTF-8, UTF-16, UTF-32 이 있으며 뒤에 붙은 숫자는 인코딩에 사용되는 비트 수를 의미한다. 세개의 인코딩 방식은 공통으로 4바이트를 사용함,
어? UTF-8은 1바이트인데 왠 4바이트???
---> UTF-8은 유니코드 문자를 1~4바이트 형태로 가변적으로 인코딩한다. 아스키 코드에 해당하는 문자와 유니코드 문자는 동일한 값을 가지므로 UTF-8 형태로 인코딩된 유니코드 문자는 기본 소프트웨어에서도 수정하지 않고 그대로 사용할 수 있다. (이 부분이 질문에 대한 답인듯)
즉 기존의 HTML 태그나 자바스크립트 등 아스키로 구축된 사이트를 별다른 변환 처리 없이 그대로 쓸 수 있는 엄청난 장점이 있었다
UTF-32는 모든 문자를 32비트로 표현하므로 고정길이 인코딩이며 메모리 공간에 대한 제약이 없을때 사용한다.
UTF-16 인코딩을 사용하면 1바이트로도 표현할 수 있는 문자에 그보다 더 많은 바이트를 소비해야 하는데, UTF-8 인코딩을 사용하면 그런 문제점이 없다