node를 이용해서 웹서버를 만들 때는 보통 express를 많이 이용합니다. 하지만 가끔은 그냥 http.createServer();을 이용해서 만들 때도 있습니다.
그런데 이렇게 하면 브라우저 상에서 한글이 깨지는 현상이 생깁니다. 이것은 브라우저에게 우리가 보내는 응답(response)이 한글로 보낸다는 것을 미리 알려주지 않아서 생기는 현상입니다. 즉 한글 인코딩 관련 문제입니다.
그러면 브라우저에게 알려주면 되겠죠. 그렇게 알려주는 코드가 아래의 코드입니다.
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 문서라는 것을 알려주면 된다는 것이었습니다.