[Web] 인코딩

hyewon jeong·2024년 2월 6일
0

web

목록 보기
23/24
post-thumbnail

🎈http 통신에서 기본적으로 일부 한글과 특수문자, 공백 등의 문자들을 그대로 http프로토콜에 포함될 수 없고 별도의 인코딩을 해서 보내야한다.

  • 서버마다 인코딩,디코딩 설정이 다를 수 있다.

  • 결국 시작은 인코딩인데 POST 방식 통신에서는 Request Content-Type 헤더에 charset 키로 문자셋을 포함하고 서버에서는 이를 토대로 디코딩을 진행한다. 하지만 GET 방식에는 기본적으로 Content-Type도 Request에 포함되지 않기 때문에 인코딩한 문자셋을 전달할 방법이 없고 이를 위해 서버에서는 GET방식 데이터의 디코딩을 위한 문자셋을 미리 지정해놔야 한다.

  • 한글을 포함하고⭐GET방식⭐ Parameter 로 전달받아 다이나믹하게 나타내기 위해서는 서버에서 위와 같이 new String, getByte 설정을 추가로 해줘야 한다.

이 경우 코드에서 new String, getBytes 를 이용해서 아래와 같이 처리할 수 있다.

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "UTF-8");

이는 ISO-8859-1 로 디코딩 되어 있는 문자열을 다시 ISO-8859-1 로 인코딩해서 원상태(UTF-8 인코딩)로 되돌린뒤 뒤에 다시 UTF-8로 디코딩 하라는 말이다.

  • 한글을 사용한다면 EUC-KR 또는 UTF-8을 문자셋으로 선택해야 한다.
    참고로 ISO-8859-1는 알파벳과 일부 특수기호만을 처리할 수 있고 한글은 처리할 수 없다.

📍getBytes()란? - 통한 인코딩


즉 , 매개변수로 받은 charset으로 문자열을 byte로 인코딩하여 byte배열에 넣어서 반환해준다는 뜻이다.

📍new String(byte[],charsetName) - 통한 디코딩

업로드중..
즉 new String(byte[],charsetName) byte[]을 매개변수로 받은 charsetName으로 지정한charset으로 디코딩한다.

📍UTF-8 과 iso-8859-1 의 차이

UTF-8은 유니코드의 모든 문자를 표현하는 데 사용되는 가변 길이 문자 인코딩 방식이며,
ISO-8859-1은 라틴 알파벳을 포함한 일부 문자를 지원하는 고정 길이 문자 인코딩 방식이다.
UTF-8은 대부분의 다국어 환경에서 선호되는 인코딩 방식이다.

한글 인코딩과 new String, getBytes

profile
개발자꿈나무

0개의 댓글