JSP에서 EUC-KR로 페이지 설정을 해놨는데 웹브라우저에서 다른 언어로 읽으면 깨질 수 밖에 없습니다
📝파라미터로 넘긴 글자가 깨지는 이유 (GET)
GET방식으로 요청시 글자가 깨져서 서버에 들어갔다면 위에 설명한 "화면의 글자가 깨지는 이유"가 있을 수 있습니다
간단한 예제를 한번 보시죠
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<html>
<script>
var text = "가";
fetch("http://localhost:8080/reqServer?word=" + text, {
method: "GET",
})
.then(response => response.text()) // 응답을 텍스트로 변환
.then(data => console.log(data)) // 응답 데이터 출력
.catch(error => console.error(error)); // 오류 처리
</script>
<body>
<h1>웹화면에 PDF 출력해보기</h1>
</body>
</html>
GET방식 통신을 이용해 word라는 키에 text를 담아서 보내고 있습니다 reqServer에서 로그를 찍었습니다. 웹브라우저의 인코딩 상태를 EUC-KR로 했을 때 결과는 "가" 입니다 KO18-U로 설정했을 때는 "╟║" 이상한 문자가 넘어갑니다. 자바스크립트에 적은 하드코딩 한글 때문에 그렇습니다 → 물론 input 박스로 받은 데이터는 잘 넘어갑니다
URI Encode 설정이 UTF-8이 아닌 경우
이 부분에 대해서는 WAS서버가 역할을 해주는 경우가 많습니다 예를 들면 톰캣이 있겠습니다 server.xml 설정에서 URIEncoding 설정을 UTF-8이 아닌 다른 인코딩 체계로 되어있는 경우 GET방식 통신때 깨져버립니다
Spring의 경우 consumes랑 produces라는 옵션이 존재합니다 Request 와 Response의 Content-Type을 설정합니다
consumes
Request 에 대한 Content-Type 설정 제한합니다 → 어차피 Request Hedaer는 Client에서 하기 때문에 해당 Content-Type외에는 호출 못하게끔 서버에서 막습니다
produces
Response에 대한 Content-Type 설정을 해줍니다 이 부분에 따라 리턴에 대한 형태가 깨질지 안 깨질지가 결정됩니다
※ 웹브라우저 및 JSP인코딩 설정을 EUC-KR로하고 POST방식으로 EUC-KR로 데이터를 보낼 때 깨지는 경우가 있는데 내가 Input 박스 따위에 적은 값이 EUC-KR이 아니라 UTF-8이고 UTF-8이 EUC-KR로 인코딩되어 Request때 깨지는 경우도 있고 Response할 때도 EUC-KR로 내려준다고 선언했지만 실제로는 UTF-8이 EUC-KR로 인코딩 되어서 보내지기 때문에 깨져버리는 경우도 있다
📝결론
어떤 깨진 글자는 복구가 가능하지만 어떤 깨진 글자는 복구가 불가능합니다 예를 들면 移���이러한 글자는 아무리해도 복구가 불가능합니다 그렇기 때문에 주먹구구식 처리보다는 근본적인 원인을 파악하기 바랍니다
요즘은 거의 UTF-8을 기본적으로 두고 코딩하기 때문에 UTF-8로 맞춰준다는 생각을 하시면 됩니다 물론 프로젝트 특성이 EUC-KR이런 걸 쓰는 곳도 있겠죠
리누스 토르발스가 개발했으며 분산형 저장소로 소스를 관리(이력, 소스 Merge, 롤백 등...)해주어서 협업시 작업 후 올리기만 하면 알아서 합쳐지고 추후에는 배포하는 과정까지 같이 이용하게끔 할 수 있다
📝GitHub
마이크로소프트의 Git 플랫폼으로 웹에서 Git에서 명령어를 입력해야 볼 수 있는 이력, 관리에 프로젝트 협업 기능까지 넣은 플랫폼이다
📝Git Workflow
Git의 동작은 총 4가지로 이루어져있다
Working Directory
작업할 파일이 있는 디렉토리 즉, 로컬에서 내가 하고 있는 현재 프로젝트
Staging Area
커밋(commit)을 수행할 파일들이 올라가는 영역 [모든 변경사항을 관리하며 어떤 변경된 파일에 대해서 올릴지 정의]
Local Repository
커밋된 파일들이 저장되어져 있는 공간 (로컬에서의 Git 관리)
Remote Repository
커밋된 파일들을 로컬이 아닌 다른 서버에 올리는 공간 (원격에서의 Git 관리) [협업]
📝Git 용어
Branch
나뭇가지라는 뜻으로 독립적으로 어떤 작업을 진행하기 위해 따로 분기시켜 작업 이력을 관리하는 것을 의미한다 예를 들면 Master에는 배포하는 완벽한 제품이기 때문에 완전한 기능이 나올때 Master에 올려야한다 그 외의 작업은 기능별로 Branch라는 걸 만들어서 작업한 후 Merge하게 된다
Merge Conflict
Merge한 Branch에서 같은 파일을 변경했을 때 충돌이 발생 예를 들면 A라는 사람이 10번라인 수정하고 B라는 15번라인 수정할 때 자동적으로 Merge가 되면 좋지만 그렇지 않을 경우 Git에서 충돌이나서 합칠 수 없다는 에러 사항이 발생하게 된다. 일반적으로 같은 파일을 동시 작업하지 않아야하며 작업할 경우 Commit주기 및 Push 주기를 짧게 가져가야한다