[현재 상황]
form(멀티파트)안에 있는 데이터들을 post로 보낸다.
그리고 페이지는 euc-kr로 되어 있는데.. 기존에 이렇게 되어 있었기 때문에 유지함..
으쌰 으쌰 라는 말을 저장할 때
으? 으? 로 자바에서 받음.
그래서 utf-8로 보내봄..
jsp에서 저장 버튼 누를 때 ajax로 보내면서 인코딩해서 보냄
const formData = new DormData();
formData.append("testName",encodeURIComponent($("input[name=testName]").val()));
그리고 컨트롤러에서 받을 때
URLDecoder.decode(testName변수,"UTF-8");해서 받아봄
으? 으?로 보냄
찾아보니 이 방식은 get에서만 되기 때문에 post는
컨트롤러에서 request.setCharcterEncoding("UTF-8");을 해야 한다고 함(톰캣 설정을 바꾸거나)
추가해봄 으? 으?로 나옴..
[20230522-1]
- 인코딩 디코딩 이리저리해도 쌰는 계속 물음표로 나옴.
- 자바 파일을 ms949로 바꿔 봄. 쌰는 계속 물음표..
[20230522-2]
- DB까지 잘 저장됨. -> DB에서 읽어와서 화면에 뿌릴 때 으? 으?이렇게 나옴.
jsp에서 입력 -> js에서 폼 체크 -> submit했을 때 오라클에 쌰가 잘들어감.
테스트 할때는 form submit했던 걸 ajax로 바꿔서 데이터를 하나씩 읽어와서
var formData = new FormData();
var formData = "name="+$("input[name=nameTEST]").val();
formData .. 필요한거 추가 후에
ajax 에
...
data : encodeURI(encodeURI(formData)),
...
해서 보내고
컨트롤러에서
URLDecoder.decode(URLDecoder.decode(name,"utf-8"),"utf-8");하니까 DB까지 쌰가 잘 들어갔다.
DB에 잘 들어간 거 확인 후에 formsubmit전에
var name = $("input[name=nameTEST]").val();
name= encodeURI(name);
$("input[name=nameTEST]").val(name);
form.submit();하고
컨트롤러에서
URLDecoder.decode(name,"utf-8"); 이렇게 받음. 하나만 처리할 때 모든 값을 처리할지는 나중에 생각하고..
js에서 보낸 쌰를 이클립스 콘솔에서 찍어보면 ? 이지만 Db에서 보면 쌰라고 잘 들어갔다.
이제 불러오는거 ...수정해야 해..
+ jsp상단에
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
이거 추가하면 바로 되는데.
문제는.. 이 프로젝트 전체가 euc-kr로 되어 있어서 내 마음대로 바꿀 수가 없다..
이미 운영중인 사이트이고.. 모든 페이지와 프로젝트를 utf-8로 바꾼다면... 다 테스트하고 수정해야 한다.....................................
일단 되는 건 알았고.. 다른 방법 찾아보자..
+ 현재는 해당 페이지를 넘어갈 때 자바에서 데이터를 넘기는데
페이지에 진입한 후에 ajax로 데이터를 읽어오도록 수정해봐야겠다.
그때 contentType에 utf-8주면 될 것 같은데?
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=paraevil&logNo=70165962824
https://okky.kr/questions/194808
https://folivora.tistory.com/19
https://min-nine.tistory.com/124
https://lordofkangs.tistory.com/39
20230925
이제는 굑이다..모든 프로젝트가 euc-kr이라.. 내가 마음대로 인코딩 형식을 바꾸는 것은 어렵기 때문에 예외처리를 해야 할 것 같다..
쌰와 같은 방식으로 Db에 저장 하는 것 까지는 해결했다.(+ 테스트 페이지만 UTF-8로 변경함.)
근데 굑은 사용자 화면에서 빈공간으로 보이고있다....그래서 굑이라는 한글이 깨지고 있다고 보면될 것 같다..
ajax로 html태그 안에 보여주고 있는데 비동기 통신으로 받아온 후 alert해보면 굑이 나온다.
근데 html에서는 공백으로 보이고있다.
https://product.kyobobook.co.kr/detail/S000200659798
교보도 나도 utf-8로 가져온 것 같은데 어디서 차이가 나는 걸까...
시도1)
해당 jsp를 UTF-8로 만들고 데이터 불러온다.
=> 개발자도구에서는 보이는데 사용자페이지에는 안보인다.
시도2)
해당 jsp를 euc-kr로 그대로 두고 비동기처리로 데이터를 불러와서 뿌려준다.
=> 개발자 도구에서는 보이는데 사용자 페이지에서는 안보인다.
개발자도구에서는 보이고 사용자 페이지에서는 안보이는 이유는?
+ 사용자페이지에서 해당 데이터를 복사해서 다른 곳에 붙여넣기 해보면. 글씨 보이고 있음.
그러면.. 화면에서 표현이 안된다고 봐도 되는 건가?
https://namu.wiki/w/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C/A000~AFFF
굑의 유니코드 AD50
UTF8: 234, 181, 144; | UNICODE: AD5 |
The Unicode Standard, Version 15.1
https://www.unicode.org/charts/PDF/UAC00.pdf
"폰트가 해당 글씨를 지원하는지 보자.." 나는 문제가 되는 페이지에서 나눔스퀘어 폰트를 사용하고 있었는데.. 테스트해보면 '굑'이라는 글씨는 없다..휴..하루종일 시간..다 썼다. https://hangeul.naver.com/font/nanum |
'차근차근 > JAVA JSP' 카테고리의 다른 글
URLDecoder: Illegal hex characters in escape (%) pattern (0) | 2023.08.25 |
---|---|
jsp 캐시 (0) | 2023.08.10 |
문자인증번호 바로 읽어오고 싶다. (0) | 2023.01.27 |
웹앱 모바일에서 숫자키패드 바로 띄우기 (0) | 2023.01.27 |
카카오톡에 URL 공유 시 변경된 썸네일 적용 안될 때 (0) | 2023.01.26 |