mustache에서 한글이 깨진다 뚫뚏

JIHYE·2022년 7월 13일
0
post-thumbnail

먼저 모든 예제는 내 스프링 공부의 길잡이 jojoldu 선생님의 저서인 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 의 예제임을 밝힙니다

왜 갑자기...?

그냥 이유가 없었다
책은 개발자 이직을 준비중일때 사뒀고 필요한 부분은 요긴하게 잘 봤는데,
뭔가 혼자서 완성해보고 싶다라는 생각?
회사에서 하는 업무들로도 엄청나게 성장하고 있다는 생각이 들지만
이미 모든 밥상이 차려져있고 나는 잘 먹기만 하는 구조이기 때문에
프로젝트 세팅부터 해본지가 언제인지 가물가물했다
이참에 공부도 할겸 책을 보기시작했다

Mustache

회사에서는 프론트와 백엔드 개발자가 따로있다
고로 내가 프론트 코드를 수정할 일은 일어나지 않는다(사실 할줄도 모른다 😅)
내가 참고한 책에서는 템플릿 엔진인 Mustache로 화면을 구성하는데,
이전에 학원에서 배웠던 JSP나 구직준비중에 잠시 봤던 Thymeleaf와 비슷한 역할을 한다

Mustache의 특징

  • SpringBoot에서 공식 지원하는 템플릿 엔진
  • JAVA 뿐만 아니라 다른 언어들도 지원

    Available in Ruby, JavaScript, Python, Erlang, Elixir, PHP, Perl, Raku, Objective-C, Java, C#/.NET, Android, C++, CFEngine, Go, Lua, ooc, ActionScript, ColdFusion, Scala, Clojure[Script], Clojure, Fantom, CoffeeScript, D, Haskell, XQuery, ASP, Io, Dart, Haxe, Delphi, Racket, Rust, OCaml, Swift, Bash, Julia, R, Crystal, Common Lisp, Nim, Pharo, Tcl, C, ABAP, Elm, Kotlin, and for SQL

출처 : mustache github

  • 로직 코드가 없어서(Logic-less templates) 뷰(View)의 역할에 충실하여, 서버와 역할을 분리할 수 있음

이러한 특징이 있다

문제의 발단

일단 처음이니까 간단한 index.mustache를 작성해보았다
정말 간단하게 책 제목을 출력하는 화면이었는데
이미 404의 향연이었다

왜?
어째서?
책과 다른게 하나도 없는데...?

여기서 1차 해결이 있었다
책의 내용을 보자면 mustache 파일을 resources/templates 하위에 만들면 자동으로 인식한다고 했지만
나의 프로젝트는 인식하지 못했다
그래서 application.yml 파일에 경로를 지정해주었다 (링크)

spring:
  mustache:
    suffix: .mustache
    prefix: classpath:/templates/

경로 지정과 함께 mustache를 가져올거야~ 라고도 알려주었다
Springboot를 실행시키니 일단 404는 피했는데...

왜 화면이...?
내가 원하는 화면에는 분명히

<h1>스프링 부트로 시작하는 웹 서비스</h1>

이게 나와야하는데 나의 화면에는

??? ??? ???? ? ???

여기서 2차 멘탈이 무너졌다
분명 charset도 지정해줬고 화면만 따로 저장해서 보면 정상적으로 나오는데 스프링을 띄워서 보면 물음표가 가득했다
내 머릿속에도 물음표가 함께 늘어만 갔다

미리 나와 같은 길을 걸어왔던 분들의 블로그글을 보니
주로 나오는것이 인코딩 문제였다

나는 더이상 무슨 인코딩을 더해야하는거야!! 하면서 구글링을 하다 한줄기 빛을 발견했다(링크)

그 블로그에는 메모장으로 mustache 파일을 열어서 인코딩을 UTF-8로 변경해서 다시 저장해보라는 것이었다
신박한 해결책을 발견하고 나도 바로 실행에 옮긴뒤
Spring을 띄웠는데 여전히 물음표의 향연...

해결

그 다음 발견한 글은 인프런의 질문게시글이었는데(링크)
스프링부트 2.7.x 버전에서는 mustache가 한글이 깨질 수 있으니 2.6.x 버전을 써보라는 것이었다

그래 스프링부터 버전 내리는게 뭔 대수라고
하면서 build.gradle 에서 버전을 내리고 실행하는순간!!

저는 보았습니다
영롱한 한글을 🫢

정말 말도 안되게...

3일을 머리 쥐어뜯게 만들었던 것이 겨우 스프링부트 버전때문이었다니...

해결하고나니 아무것도 아니었지만 3일간 나는 너무 힘들었다
프로젝트를 새로 파야하나 이런 고민도 하면서...

그래서 결론은 성공 성공 성공!!

그래서

이제 앞으로 책의 예제를 참고하며 개인 프로젝트를 하나 해보려한다
책의 내용과 내가 회사에서 사용하는 기술들을 접목하면 뭐라도 되지 않을까...?하면서
개발자가 되기위해 노력했던 그 때의 열정을 다시 찾아보겠다

책과 관련된 예제 코드는 저의 github 에 있습니다

profile
초보개발자의 개발일기

2개의 댓글

comment-user-thumbnail
2022년 12월 17일

application.properties에 server.servlet.encoding.force-response= true 을 추가해서 encoding을 강제화 하는 방법이 있어요!

1개의 답글