출처사이트
DB -> java 데몬 -> javaScript 로 데이터를 전송하며 모두 UTF-8 로 처리했지만
어김없이 한글 깨짐 현상이 발생했습니다.
아마도 DB->java 데몬 으로 옮겨 오면서 UTF-8 처리가 제대로 되지 않은걸로 추측됩니다.
이문제에 대해서 해결한 방법을 아래에 적었습니다.
java URLEncoder.encode("한글","UTF-8") URLDecoder.decode("한글","UTF-8") java script function urldecode (str) { return decodeURIComponent((str + '').replace(/\+/g, '%20')); // 공백 문자인 + 를 처리하기 위해 +('%20') 을 공백으로 치환 } |
위와 같이 URL 엔코더와 디코더를 이용해서 문제를 해결했습니다.
URL 엔코더의 경우 주로 검색창에 한글로 검색했을 경우
검색된 페이지의 url을 보시면 "검색+한+글자" 와 같은 것을들 자주 볼수 있었을 텐데요.
URL로 엔코딩후 다시 디코딩을 하면 공백에 + 기호로 처리되어 위의
java Script 에서도 + 기호가 모두 들어간채로 디코딩 되었습니다.
그래서 위와 같은 함수를 만들었습니다.
핵심은 decodeURIComponent((str + '').replace(/\+/g, '%20')); // 공백 문자인 + 를 처리하기 위해 +('%20') 을 공백으로 치환
이부분 입니다.
+를 만나면 그냥 공백으로 치환해 버리는거죠 '%20' <-- 요놈이 + 기호 입니다.
좀 불편하긴 하지만 한글이 깨지지 않고 다른 언어들 간에 전송을 할수 있는 방법으로는
이방법이 제일 안전하고 괜찮아 보입니다.
출처사이트
https://saem-ee.tistory.com/45
1. web.xml 파일에서 인코딩 설정
1
2
3
4
5
6
7
8
|
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
|
cs |
2. server.xml 파일에서 인코딩 설정
1
2
|
<Connector connectionTimeout="20000" port="8081"
protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
|
cs |
이런식의 설정을 하고 실행시켜도 한글이 깨지는 경우가 있다.
get과 post방식을 통해 데이터를 넘겨줄때 많이 발생하는데, 그때 시도할 방법이 있다.
1. jsp페이지 request.setCharacterEncoding 명시(post방식)
1
2
3
4
5
6
7
8
9
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@page import="java.util.*"%>
<%
request.setCharacterEncoding("UTF-8");
%>
|
cs |
1
|
<form method="post" accept-charset="utf-8">
|
cs |
보내는 파라미터 값을 encodeURI(값,"UTF-8")을 통해 직접 인코딩시켜 보낼 수 있다.
나는 form accept-scharset을 통해 인코딩에 성공할 수 있었다 ! 다른방법들은 왜 안된건지 ㅜ
실제 운영을 할때에는 웬만하면 영어값을 사용하는 것이 좋다고 한다.
SERVER에서는 EUC-KR인데, ORACLE DB는 UTF-8일수도 있기 때문이다.
'웹개발 > jsp' 카테고리의 다른 글
jsp태그 및 <% 사용해서 개발하기 (0) | 2022.02.17 |
---|---|
ajax로 form data(multipart) 전송 하기 (0) | 2022.02.17 |
ajax로 데이터 주고받기 (0) | 2022.02.17 |
${} - EL 표현식 문법과 사용 방법 (0) | 2022.02.17 |
EL과 JSTL (0) | 2021.07.23 |
댓글