최근 nodejs를 사용하여 백엔드 api 서버를 구축하였습니다. 구축 후 확인해보니 브라우저에서 한글 인코딩이 깨졋서 나타났습니다. 생각해보니 인코딩을 설정하지 않아 발생한 이슈 같아 response header에 인코딩을 설정 후 정상 동작하는 것을 확인했습니다. 아래는 nodejs에서 response 응답 헤더를 utf-8로 설정하는 방법에 대하여 간략하게 알아봅니다.


! nodejs 응답 헤더 utf-8 설정하기
웹브라우저에서 한글이 깨지는 경우 가장 먼저 확인하는 것이 바로 인코딩입니다. 인코딩 이슈가 발견되었다면 대부분 데이터베이스의 인코딩 문제이거나 아니면 백엔드 언어에서의 인코딩 설정 문제일 것 입니다. 기존에 다른 언어(Python)로 잘 동작했기 때문에 새로 구축한 nodejs express에서의 인코딩 설정 부분이 미설정되어 한글이 깨져보이는 것이라 바로 생각할 수 있었죠.

그렇다면 nodejs에서 응답 헤더를 설정하는 방법을 알아봅니다. 일단 브라우저에서 응답 헤더를 설정해보니 설정된 값이 없었습니다. 그래서 헤더의 Charset과 함께 Content-Type을 설정 후 아래와 같이 기존 코드에 추가하였습니다.
function apiTest(req, res) {
  ...
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' })
  res.end('성공')
}

위 코드에서 response 응답 헤더를 추가하기 위해서 res.writeHead()을 사용하였고 컨텐츠 타입과 charset을 추가하였습니다. 그 결과 깨져보이던 '성공'이라는 한글 문자가 정상적으로 보이게 되었습니다. (변경하기 이전에는 깨져서 어떤 글인지 알 수 없었죠.)

정리하면...

- express를 사용한 nodejs 환경에서 한글 깨짐 현상 발견
- res.writeHead()를 사용하여 Content-type과 charset을 추가, 설정함(utf-8)
- 한글 깨짐 이슈 해결


여기까지 간략하게 알아본 nodejs 응답 헤더 설정 방법이었습니다.