쓰레기 코드는 두통입니다. 이 기사는 Spring MVC에서 Barbled Chinese의 문제에 대한 해결책을 소개합니다.
1 : 양식 제출 컨트롤러가 중국 매개 변수를 얻은 후에는 차량 코드 솔루션
참고 : JSP 페이지 인코딩은 UTF-8로 설정됩니다
양식 제출 방법은 게시해야합니다. get 메소드 아래에서 스프링 인코딩 필터는 효과가 없습니다.
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <form action = "$ {ctx}/user/adduser"name = "userform"method = "post">다음과 같이 web.xml을 수정하고 인코딩 필터를 추가하십시오 (ForceEncoding 매개 변수 값을 true로 설정해야합니다).
<filter> <filter-name> 캐릭터 에코 인코딩 필터 </filter-name> <filter-class> orgspramprameworkwwebfilterCaracterenCterenCterenCodingFilter </filter-class> <init-param> <param-name> encoding </param-name> <Param-value> utf-8 </init-param> </initparam> <Param-Name> ForceEncoding </param-name> <param-value> true </param-value> </init-param> </filter> <filter-mapping> <filter-name> charac
참고 : 데이터베이스 인코딩이 중국어를 지원합니까?
데이터베이스 테이블과 테이블 필드가 맞습니까?
구성 연결 데이터베이스의 매개 변수 설정을 수정하십시오.
<속성 이름 = "url"value = "jdbc : mysql : // localhost : 3306/dbname? useUnicode = true & characterEncoding = utf-8"> </property>
첫 번째 사례 :
중국어로 JSP 페이지를 입력하고 컨트롤러가 달린 코드를 입력하십시오. 현재 설정해야 할 것은 인코딩을 UTF-8로 통합하기 위해 인코딩 된 필터 (필터)를 추가하는 것입니다. 코드는 다음과 같습니다.
web.xml 구성 파일 :
<Filter> <Filter-Name> 캐릭터 encodingFilter </filter-name> <filter-class> orgspringframeworkwebfilterCaracterEncterencodingfilter </filter-class> <init-param> <param-name> encoding </par am-name> <param- value> UTF-8 </param-value> </init-param> </filter> <filter-mapping> <filter-name> char
여기서는 WebXML의 시작 부분 에이 코드를 배치하는 것이 가장 좋다는 점에 유의해야합니다. 가로 채기 순서가 있기 때문에 뒷면에 배치되면 차단하기 쉽습니다.
두 번째 사례 :
데이터베이스 중국 데이터, JSP Page는 차량 코드를 표시합니다 (엄격한 의미에서는 차량 코드가 아니지만 물음표 형태로 표시됨)
전면과 백엔드 간의 데이터 상호 작용은 JSON 데이터를 사용하기 때문에이 상황의 이유에 대해 잘 모르겠습니다. 나는 전에 그것을 경험 한 적이 없다. 나는 너무 적은 프로젝트를 한 것에 대해서만 자신을 비난 할 수 있으며, 그것을 해결하기는 어렵지 않습니다. JSON을 변환 할 때 인코딩 형식을 설정하면됩니다. 코드는 다음과 같습니다.
ResponseSetContentType ( "application/json; charset = utf-8"); // darbled 코드에서 데이터 전송을 방지합니다
이 문장을 작성하면 다시는 코드가 없습니다.
세 번째 상황 :
페이지는 컨트롤러에 전달하는 것이 정확하지만 데이터베이스에 저장 한 후에는 차량이 나옵니다 (위와 마찬가지로 엄격한 차량 코드가 아닙니다. 모두 물음표가 있습니다).
이 문제는 한동안 나를 괴롭 혔습니다. 데이터베이스의 인코딩 형식이 잘못되었다고 생각하기 시작했습니다. UTF-8의 인코딩 형식으로 데이터베이스를 다시 만들 수는 없습니다. 마침내, 나는 그것이 Jboss의 문제라고 생각했습니다. 우리 서버는 jboss를 사용합니다. 인터넷을 검색하고 데이터 소스에 연결할 때 인코딩 형식을 추가했습니다. 코드는 다음과 같습니다.
<DataSource jta = "true"jndi-name = "java : jboss/dataSources/jcmysqlds"pool-name = "jcmysqlds"enabled = "true" use-java-context = "true"> <connection-url> jdbc : mysql : // 46/itoo_basic_basic? useUnicode = true & charac ill> false </prefill> <use-strict-min> false </use-strict-min> <flush-strategy> failingconnectiononly </flush-strategy> </pool> <usecurity> <user-name> root </user-name> <pass <a href = "http : // wwwitnet/edu/ebg/"target = "_ blank"> word </a>> 123456 </pass <a href = "http : // wwwitnet/edu/ebg/"target = "_ blank"> word </a>> </datasource>
1. 페이지가 잡혔습니다
페이지는 비교적 쉽게 해결할 수 있으며 해당 JSP 페이지 또는 HTML 페이지에서 관련 문자 세트를 종종 설정합니다. 좋다
%@page language = "java"contenttype = "text/html; charset = utf-8"pageencoding = "utf-8"%
2. 전송 값 garbled 코드
값 전송 프로세스 중에는 차량 코드도 자주 나타납니다. 그것이 어떤 시나리오인지는 말할 것도없고, 일반적으로 사용되는 솔루션에는 다음 구성 지정 필터가 포함됩니다.
<!-요청 필터를 구성하고, 인코딩 형식을 UTF-8로 설정하고, 중국어가 멍청이를 피하십시오-> <filter> <filter-name> springUtf8encoding </filter-name> <filter-class> orgspramepramewwebfilterCharacterenCodingFilter </filter-class> <param-name> encod> </param-name> <Param-value> UTF-8 </param-value> </init-param> <init-param> <init-param> <init-param> <Param-name> ForceEncoding </param-name> <param-value> true </param-value> </init-param> </filter>
요청 문자 세트를 설정합니다
종종 프론트 데스크에서 해당 컨트롤러 또는 작업으로 전달한 후에는 차량 코드가 나타납니다. 내 일반적인 아이디어는 먼저 기본 문자 세트 자체를 인쇄하는 것입니다.
SystemOutPrintln (requestGetCharacterEncoding ());
그런 다음 상황에 따라 필요한 문자 세트가 인쇄되지 않으면 해당 문자 세트를 설정하십시오.
requestSetchAracterEncoding ( "UTF-8");
물론 일부 상황은 해결되지 않을 수 있습니다. 다음을 사용할 수 있습니다
String str = newstring ((requestGetParameter ( "bigQuestionTypename")) getBytes ( "ISO-8859-1"), "UTF-8")
3. 데이터베이스가 달린 코드를 저장하십시오
이것은 비교적 복잡합니다. 여기서 LZ는 MySQL을 사용하고 MySQL 은이 멍청한 문제를 해결하는 방법을 소개하는 데 사용됩니다.
우리 모두가 아시다시피, 순수한 JDBC, 최대 절전 모드 또는 JPA인지 여부는 바닥에서 사용하는 것이 좋습니다. 실제로, 그것은 본질적으로 JDBC이며, 해당 프레임 워크는 관련 기준으로 만 캡슐화됩니다. 따라서 어떤 종류의 기술이든 데이터베이스에 연결된 URL을 사용합니다. 따라서 URL을 먼저 점검해야합니다
URL
표준 상황은 다음과 같이 해당 상황 후에 해당 문자 세트 설정을 추가합니다.
jdbcurl = jdbc : mysql : /// itcastoa? useUnicode = true & characterencoding = utf-8
위에서 언급했듯이 UseUnicode는 데이터베이스의 문자에 연결되어야하며 이것이 무엇입니까? 이것은 XML에서 문제입니다. &의 탈출 문자입니다. XML을 사용하여 해당 데이터베이스 연결 구성을 구성하는 경우 문제입니다. 그러나 ** 속성을 사용하는 경우 문제가 발생하고 앰프를 제거해야합니다. 이것은 실제로 LZ가 피 묻은 머리를 가진 경험입니다.
데이터 베이스
여기서 문제는 상대적으로 다루기가 어렵습니다. 데이터베이스에 로그인하십시오
데이터베이스 인코딩 형식을 봅니다
<img src = "http : // www2ctocom/uploadfile/collfiles/20150302/png"7plu 닌자 htahle 닌자 : 1opentablaug : sun. 1 일 SQL> "=" ">
서버의 문자 세트가 Latin1인지 확인할 수 있습니다. 여기서 우리는 일반적으로 사용되는 캐릭터 세트에 대해 이야기해야합니다.
세계의 평화와 번영을 위해 ISO 조직은 유니 코드 문자 세트 솔루션을 지정했습니다. 유니 코드 인코딩은 32 비트 바이너리를 포함하여 서로 다른 인코딩 간의 상호 의사 소통 및 전환의 브리지이므로, 2의 힘으로 문자를 수용 할 수 있습니다. 유니 코드는 다른 요구에 따라 세 가지 솔루션으로 나뉩니다.
UTF8 : 국제적으로 다른 언어로 나타나는 코딩을 해결하는 데 사용됩니다. 영어의 경우 8 자리가 사용되며 중국어에는 3 자리가 사용됩니다. 추가 처리없이 UTF9 문자 세트를 지원하는 모든 브라우저에 표시 할 수 있습니다.
다른 두 개는 UTF16과 32이며 여기에서 편집되지 않습니다. 직접 확인할 수는 있지만 여전히 저장의 편의성과 사용해야 할 사람을 결정하는 데 사용하기 때문입니다.
좋아, 비교적 친숙한 것은 일반적으로 국가 표준 코드로 알려진 GBK이며 중국 국가 표준에 의해 공식화되며 한자 만 포함합니다. 따라서 두 가지와 비교할 때 UTF8은 더 나은 호환성이지만 스토리지 용량이 더 큽니다.
캐릭터 세트를 충전하거나 다시 돌아와서 문제를 먼저 해결하면 곧 돌아 오십시오. 따라서 여기에서 GBK 또는 UTF8을 사용해도 괜찮습니다. 그러나 latin1은 확실히 불가능합니다. 여기서는 주로 그러한 명령에 의해 설정됩니다.
서버, 데이터베이스 및 데이터 테이블 부분이 별도로 설정되며 연결 인코딩을 설정해야합니다. 연결 인코딩 설정은 다음과 같습니다.
mysql> set arribute_set_client = 'gbk'; mysql> set arribution_set_connection = 'gbk'mysql> set ar
인코딩을 설정하면 아래에서 중국어를 성공적으로 삽입 할 수 있습니다. 실제로, 그것은 한 문장으로 해결할 수 있습니다.
일반적으로 사용되는 명령
데이터베이스 인코딩 형식을 봅니다
'문자 _set_%'와 같은 변수를 표시합니다.
데이터베이스에서 테이블 생성을보십시오
테이블 테이블 이름 만들기를 보여주십시오.
데이터베이스 인코딩 형식을 설정합니다
setNames 'gbk';
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.