node 한글 깨짐 : http 웹서버 만들 때 한글 깨지는 현상 해결

node를 이용해서 웹서버를 만들 때는 보통 express를 많이 이용합니다. 하지만 가끔은 그냥 http.createServer();을 이용해서 만들 때도 있습니다.

그런데 이렇게 하면 브라우저 상에서 한글이 깨지는 현상이 생깁니다. 이것은 브라우저에게 우리가 보내는 응답(response)이 한글로 보낸다는 것을 미리 알려주지 않아서 생기는 현상입니다. 즉 한글 인코딩 관련 문제입니다.

node 한글 깨짐
한글이 제대로 해석되지 않는 모습
node 한글 깨짐
한글이 제대로 해석된 모습

그러면 브라우저에게 알려주면 되겠죠. 그렇게 알려주는 코드가 아래의 코드입니다.

  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });

이 코드의 의미는 내가 보내는 내용이 text 중에 html이라는 내용이고, 문자셋은 utf-8이니까 그렇게 알아서 해석해줘라.. 하는 내용입니다.

아래는 app.js 예제 코드입니다.

const http = require('http');

const app = http.createServer((req, res) => {
  // 브라우저에게 한글로 처리된다는 것을 알려줘야 한다.
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
  
  if (req.url === '/') {
    res.end('여기는 메인 화면 입니다.');
  } else if (req.url === '/login') {
    res.end('여기는 로그인 화면입니다. http서버');
  }
});

app.listen(3001, () => {
  console.log('http 서버로 가동된 서버입니다.');
});

오늘은 간단하게 node js http 서버의 한글 깨짐 현상에 대해 알아봤습니다. 한마디로 말하면 응답을 보낼 때 헤더에 utf-8로 보내는 html 문서라는 것을 알려주면 된다는 것이었습니다.

답글 남기기

7 + 17 =