sitelink1 | |
---|---|
sitelink2 | |
extra_vars5 | |
extra_vars6 |
그런데 개발환경인 이클립스+톰캣에서는 깨지지 않는다.
그에 대한 Copilot 의 답변을 들어봤다.
톰캣 9.0 환경에서 JSP가 한글이 포함된 JS 파일을 import 할 때 한글이 깨지는
문제는 주로 파일의 인코딩 설정 또는 톰캣의 인코딩 설정과 관련이 있습니다.
이 문제를 해결하기 위해 몇 가지 방법을 시도해볼 수 있습니다.
### 1. 파일 인코딩 확인 및 설정
먼저, JSP와 JS 파일이 UTF-8 인코딩으로 저장되어 있는지 확인하세요.
- Eclipse에서 파일을 열고, `File` > `Properties` > `Resource` 탭에서 인코딩이 `UTF-8`로 설정되어 있는지 확인합니다.
- 필요한 경우, 인코딩을 UTF-8로 변경하고 파일을 다시 저장합니다.
### 2. 톰캣의 인코딩 설정
톰캣의 `server.xml` 파일을 수정하여 인코딩 문제를 해결할 수 있습니다.
1. `server.xml` 파일 열기: `<TOMCAT_HOME>/conf/server.xml`
2. 다음 Connector 설정에 URIEncoding="UTF-8"을 추가합니다:
```xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
```
### 3. JSP 페이지의 인코딩 설정
JSP 페이지 상단에 다음과 같은 디렉티브를 추가하여 인코딩을 명시합니다:
```jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
```
### 4. 웹 애플리케이션의 인코딩 필터 설정
`web.xml` 파일에 인코딩 필터를 추가하여 모든 요청과 응답에 대해 UTF-8 인코딩을 강제할 수 있습니다.
```xml
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
### 5. JS 파일의 인코딩 설정
JS 파일이 UTF-8로 인코딩되어 있는지 확인합니다. 이를 위해 텍스트 에디터에서 파일을 열고 저장할 때 UTF-8 인코딩을 사용하도록 설정합니다.
### 6. HTML 파일의 인코딩 설정
HTML 파일의 `<head>` 섹션에 다음 메타 태그를 추가하여 인코딩을 명시합니다:
```html
<meta charset="UTF-8">
```
위의 방법들을 순서대로 적용해보면서 문제를 해결할 수 있습니다. 각 단계가 적용된 후 한글이 제대로 표시되는지 확인해보세요.
위 방법들중 환경과 코드만 적용해보다가 마지막에 별도의 에디터 프로그램으로 파일의 인코딩을 utf-8로 적용했는데 그게 문제더라...
예상으로는 개발환경에서의 파일 저장 인코딩과 개발 환경 구동 서버의 인코딩이 동일하기 때문에 인코딩 오류가 없었던 것 같다. (iso-8859 또는 ms949 일 가능성이 있음)
그런데 배포하여 운영하는 환경에서는 파일 인코딩과 서버의 인코딩이 다르니 당연히 깨지는 현상이 발생한 것이라고 예상된다. (서버는 utf-8 로 설정했다)
라고 생각해서 운영의 js 파일을 copy 해서 개발의 js 에 overwrite 하고 개발서버의 서비스를 출력해봤는데... 안깨짐 -0-
이해 할 수 없는 현상이다. ㅜ.ㅜ
개발 환경의 인코딩 처리 프로세스가 운영보다 스마트 한가보다라는 결론으로 끝냈다. ㅎㅎ
어쨌든 한글이 깨지면 copilot 의 답변의 내용은 모두 체크해 봐야 한다.
다음은 Copilot 의 답변을 그대로 캡춰한 이미지이다. (위에 텍스트는 copy & paste 용)