springmvc+mybatis+mysql 중국어 디코딩 문제 해결
처음에 mybatis에서 다음과 같이 설정했습니다.
<select id="queryContentById" resultType = "java.lang.String" parameterType="String" >
select text from News where id=#{o}
</select>
여기서 표 뉴스의 text 필드는blob 형식입니다이렇게 찾아낸 텍스트 값은 컨트롤러에 계속 혼란스러워 보입니다.
이후 구글은 관련resultType=blob 관련 내용을 찾았으나 결과가 없자 이를resultType="java.util.Map"으로 바꾸고
byte[] b = (byte[]) map.get("text");
String s = new String(b,"utf-8");
s를 출력합니다. 이때 중국어는 정상적으로 표시되지만 페이지 표시는 여전히 혼란스럽습니다.따라서 aax 요청에 따라 응답 헤더 정보를 검사하여 다음과 같이 찾습니다
Content-Typetext/html;charset=ISO-8859-1
데이터베이스에서 인코딩이utf-8로 통일되었기 때문에 응답 헤더 정보 수정
@RequestMapping(value = "/queryContentById", method = RequestMethod.GET,produces = "text/plain;charset=UTF-8")
public @ResponseBody String queryContentById(@RequestParam("id") String id) throws SQLException, UnsupportedEncodingException {
Map map = (Map) ndrService.queryContentById(id);
byte[] b = (byte[]) map.get("text");
String s = new String(b,"utf-8");
return s;
}
우리 다음 또 다른 예시 의 문제 를 보자1、SpringMVC의 Controller는 디코드를 받습니다.
(1) 웹에 있습니다.xml에 문자 집합 필터:
SpringEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true SpringEncodingFilter /*
(2) JSP 등의 페이지에서 수정:charset=UTF-8"및 pageEncoding="UTF-8"2. Controller는 정확한 중국어를 읽지만 데이터베이스에 저장하면 "??"
(1) 데이터베이스 연결 수정 jdbc_url=jdbc:mysql://localhost:3306/mybatistest?useUnicode=yes&characterEncoding=UTF8("&":xml 파일에 "&"표시)
(2) 데이터베이스 문자 집합을utf-8로 수정: mysql 루트 디렉터리에서 my를 엽니다.ini(mysql5.6은 my-default.ini입니다. 이것을 my.ini라고 명명하려면 아래의 구체적인 위치에 추가(또는 수정)합니다.
[mysqld]character-set-server=utf8 [client]default-character-set = utf8[mysql]default-character-set = utf8
이렇게 내 쪽에 설치하면 아무런 문제가 없다.요약:
보통 중국어 디코딩 문제는 문자 인코딩 설정이 잘못되어 발생하는 것입니다. 저는 데이터베이스든 자바 파일이든 jsp 파일이든 모두 UTF-8로 통일되었습니다.결국 문제가 해결되었다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springmvc application/octet-stream problemmistake: Source code: Solution: Summarize: application/octet-stream is the original binary stream method. If the convers...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.