java에서 Servlet 디코딩 처리 방법
request.setCharacterEncoding("ISO8859-1");
ad=request.getParameter("name");
byte[] temp3 = ad.getBytes("GBK");
String str = new String(temp3);
이게 중국어야!서버에 인코딩 변환을 직접 설정하는 더 간단한 방법도 있다.TOMCAT 5.0.28을 사용합니다.... 에서\Tomcat 5.0\conf 디렉토리에서 SERVER를 찾습니다.XML 파일, 글꼴로 열면 다음과 같이 설정합니다. 안에 속성을 추가하면 됩니다. URIENCODING = "GBK"테스트를 통과하고 그 다음에request입니다.setCharacter Encoding("GB2312")이라는 말이 도대체 무슨 작용을 하는지, 난마 문제를 해결하지 못하면 우리가 그것을 이용하여 어떤 작용을 하는지 정리한 자료는 다음과 같다. (1) JSP 페이지에는 중국어가 있지만 다음은 난코딩이다. 해결 방법은 JSP 페이지의 인코딩이 있는 곳이다. Jsp가 자바 파일로 바뀔 때의 인코딩 문제이기 때문에 기본적으로 어떤 서버는 ISO-8859-1이다. 만약에 JSP에 중국어를 직접 입력했다면,Jsp가 이를 ISO8859-1로 처리하는 것은 틀림없이 문제가 있을 것이다. 이 점은 Jasper가 생성한 자바 중간 파일을 보면 확인할 수 있다(2) Request 대상으로 고객이 제출한 한자 코드를 가져오면 오류가 발생합니다. 해결 방법은 Filter, 즉 Servelet 필터를 설정하는 것입니다. 코드는 다음과 같습니다.
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException {
request.setCharacterEncoding("GBK");
//
chain.doFilter(request, response);
}
웹 설정.xml
<filter></filter>
<filter-name></filter-name>Set Character Encoding
<filter-class></filter-class>SetCharacterEncodingFilter
<filter-mapping></filter-mapping>
<filter-name></filter-name>Set Character Encoding
<url-pattern></url-pattern>/*
만약 당신의 것이 아직도 이런 상황이 발생한다면 당신은 네 번째 상황이 발생했는지, 당신의 Form이 제출한 데이터가 get으로 제출되었는지 아래를 보세요. 일반적으로post로 제출하면 문제가 없습니다. 만약 그렇다면 네 번째 중 해결 방법을 보십시오.그리고 한자 문자가 포함된 정보를 처리하는 코드는 다음과 같다.
public String toUni(String gbStr){
String uniStr = "";
if(gbStr == null){
gbStr = "";
}
try{
byte[] tempByte = gbStr.getBytes("GB2312");
uniStr = new String(tempByte,"ISO8859_1");
}catch(Exception ex){
}
return uniStr;
}
}
당신도 직접적인 변환을 할 수 있다. 먼저 얻은 문자열을 ISO-8859-1로 인코딩한 다음에 이 인코딩을 한 바이트 그룹에 저장한 다음에 이 그룹을 문자열 대상으로 바꾸면 된다. 예를 들어 Stringstr=request.getParameter(“girl”);Byte B[]=str.getBytes(“ISO-8859-1”);Str=new String(B);상술한 전환을 통해 제출한 모든 정보가 정확하게 표시됩니다.(3) Formget에서 서버에서 request를 요청합니다.getParameter ("name") 는 난수로 되돌아옵니다.tomcat의 방법으로 Filter를 설정해도 소용없거나 Request를 사용할 수 없습니다.setCharacterEncoding("GBK");문제가 되지 않는 것은 매개 변수 전달을 처리하는 방법에 있다. 만약에 servlet에서 DoGet(Http Servlet Request request, Http Servlet Response) 방법으로 처리한다면 앞에
request.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=GBK");
라고 쓰여도 소용이 없다. 되돌아오는 중국어는 난장이다!!!이 함수를 DoPost(HttpServletRequest request, HttpServletResponse response)로 바꾸면 모든 것이 OK입니다.마찬가지로 두 개의 JSP 페이지로 폼 입력을 처리하는데 중국어를 표시할 수 있는 것은post 방법으로 전달되었기 때문에 get 방법으로 바꾸는 것은 여전히 안 된다.이를 통해 알 수 있듯이 servlet에서 DoGet () 방법이나 JSP에서 get 방법으로 처리할 때 주의해야 한다.브라우저를 통해 매개 변수 정보를 전달해야 하기 때문에 자주 사용하는 문자 집합의 충돌을 일으키거나 일치하지 않을 가능성이 높습니다.//이곳은request로 이해됩니다.setCharacterEncoding("GBK");set는 Request의 body입니다. 헤더 부분이 아니라 get가 요청할 때 파라미터를 url 뒤에 놓고 body에 두지 않기 때문에 이때 Request입니다.setCharacter Encoding("GBK")은 작용하지 않습니다.post 제출로 바꾸면 문제가 없습니다.테스트 통과!!!해결 방법: 1)tomcat의 서버를 엽니다.xml 파일, 블록을 찾아 다음 줄에 추가합니다: URIENCODING="GBK"온전한 것은 다음과 같습니다.
<connector uriencoding="GBK" maxthreads="150" debug="0" redirectport="8443" port="8080" enablelookups="false" maxsparethreads="75" minsparethreads="25" connectiontimeout="20000" disableuploadtimeout="true" acceptcount="100"></connector>
2) 토마토캣을 다시 시작하고 모든 것을 OK합니다.tomact.org에서 설명한 This specifies the character encoding used to decode the URI bytes, after% x decoding the URL.If not specified, ISO-8859-1 will be used. URI의 bytes, request를 변환한 것입니다.setCharacter Encoding("GBK")이 request도 바꾸면 문제가 ok됩니다!(4) JSP 페이지에 중국어가 있고 단추 위에 중국어도 있지만 서버를 통해 페이지를 볼 때 혼란이 발생한다. 해결 방법은 우선 JSP 파일에 현지화된 메시지 텍스트를 직접 포함하지 말고
<context debug="0" path="/workshop" docbase="workshop"></context>reloadable="true" >
<resource name="jdbc/WorkshopDB"></resource>auth="Container"
type="javax.sql.DataSource" />
<resourceparams name="jdbc/WorkshopDB"></resourceparams>
<parameter></parameter>
<name></name>factory
<value></value>org.apache.commons.dbcp.BasicDataSourceFactory
<parameter></parameter>
<name></name>maxActive
<value></value>100
<parameter></parameter>
<name></name>maxIdle
<value></value>30
<parameter></parameter>
<name></name>maxWait
<value></value>10000
<parameter></parameter>
<name></name>username
<value></value>root
<parameter></parameter>
<name></name>password
<value></value>
<parameter></parameter>
<name></name>driverClassName
<value></value>com.mysql.jdbc.Driver
<parameter></parameter>
<name></name>url
<value></value>
굵은 부분은 특히 주의해야 한다. JDBC와 직접 연결할 때와 다르다. 만약에 설정이 정확하다면 중국어를 입력할 때 데이터베이스에 들어가면 중국어가 된다. 한 가지 주의해야 할 것은 데이터를 표시하는 페이지에서도 이 코드를 사용해야 한다는 것이다.주의해야 할 것은 어떤 프론트 데스크톱의 사람들이 코드를 쓴 후에 Dreamver로 쓴 것이다. Form을 썼을 때 그를 jsp로 바꾸었다. 그러면 주의해야 할 점이 하나 있다. 바로 Dreamver에서 Action의 제출 방식은 Request이다. 너는 그를 와야 한다. 왜냐하면 jsp의 제출 과정에서 POST와 GET 두 가지 방식이 있기 때문이다.그러나 이 두 가지 방식으로 제출된 코드는 인코딩에 있어 크게 다르다. 이것은 뒤에 있는 곳에서 설명한다. 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java에서 Servlet 디코딩 처리 방법예를 들어 Stringstr=request.getParameter(“girl”);Byte B[]=str.getBytes(“ISO-8859-1”);Str=new String(B);상술한 전환을 통해 제출한 모든 정보가...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.