jsp 페이지 전달 중국어 매개 변수 난 장 판 해결

7135 단어 문제
form 은 서버,get,post 에 데 이 터 를 제출 하 는 두 가지 방법 이 있 습 니 다.각각 말씀 하 세 요.
(1)get 제출
  1.우선 클 라 이언 트(브 라 우 저)의 form 폼 을 get 방법 으로 어떻게 데 이 터 를 인 코딩 해서 서버 에 제출 하 는 지 알려 주세요.
  
    get 방법 에 있어 서 모두 데 이 터 를 요청 한 url 뒤에 연결 하여 매개 변수 로 합 니 다.예 를 들 어:http://localhost:8080/servlet?msg=abc
(흔히 볼 수 있 는 어 지 러 운 문제 가 발생 합 니 다.url 에 중국어 나 다른 특수 문자 가 나타 나 면:http://localhost:8080/servlet?msg=항 저 우,서버 쪽 에서 쉽게 어 지 러 운 코드 를 얻 을 수 있 습 니 다)url 연결 이 완료 되면 브 라 우 저 는 url 에 대해 URL encode 를 한 다음 서버 에 보 냅 니 다.URL encode 의 과정 은 일부 url 을 문자 로 하 는 것 입 니 다.어떤 인 코딩 방식(예 를 들 어 utf-8,gbk 등)에 따라 바 이 너 리 바이트 로 인 코딩 한 다음 에 각 바이트 마다 3 자 를 포함 하 는 문자열 인'%x y'로 표시 합 니 다.그 중에서 xy 는 이 바이트 의 두 16 진법 으로 표시 합 니 다.제 가 여기 서 말 한 것 은 잘 모 르 겠 지만 구체 적 인 소 개 는 자바.net.URLEncoder 류 의 소 개 를 볼 수 있 습 니 다.URL encode 의 과정 을 알 게 되 었 습 니 다.우 리 는 두 가지 중요 한 문 제 를 볼 수 있 습 니 다.첫째,URL encode 가 필요 한 문 자 는 보통 ASCII 가 아 닌 문자(개괄적 으로 말 하면)입 니 다.그리고 쉽게 말 하면 영문 자 모 를 제외 한 문자(예 를 들 어 중국어,일본어 등)는 URL encode 를 해 야 하기 때문에 우리 에 게 는...모두 영문 자모의 url 은 서버 가 난 장 판 을 받 는 문제 가 발생 하지 않 습 니 다.난 장 판 은 모두 url 에 중국어 나 특수 문자 가 들 어 있어 서 생 긴 것 입 니 다.
두 번 째:URL encode 는 도대체 그런 인 코딩 방식 으로 문 자 를 인 코딩 합 니까?여기 가 바로 브 라 우 저의 일 입 니 다.그리고 브 라 우 저 마다 다른 방법 이 있 습 니 다.중국어 버 전의 브 라 우 저 는 기본적으로 GBK 를 사용 합 니 다.브 라 우 저 설정 을 통 해 UTF-8 을 사용 할 수 있 습 니 다.사용자 마다 브 라 우 저 설정 이 다 를 수 있 고 서로 다른 인 코딩 방식 을 만 들 수 있 습 니 다.그래서 많은 사이트 의 방법 은 먼저 url 안의 중국어 나 특수 문 자 를 자바 script 으로 URL encode 를 한 다음 에 url 을 연결 하여 데 이 터 를 제출 하 는 것 이다.즉,브 라 우 저 를 대신 하여 URL encode 를 만 든 것 이다.장점 은 사이트 가 get 방법 으로 데 이 터 를 제출 하 는 인 코딩 방식 을 통일 할 수 있다 는 것 이다.
 URL encode 가 완료 되면 현재 url 은 ASCII 범위 내 문자 가 되 고 iso-8859-1 인 코딩 방식 으로 바 이 너 리 로 바 뀌 어 요청 헤더 와 함께 보 냅 니 다.
여기 서 몇 마디 더 하고 싶 은 것 은 get 방법 에 있어 서 요청 실체 가 없고 데 이 터 를 포함 한 url 이 모두 요청 헤더 에 있 습 니 다.URL encode 를 사용 하 는 이 유 는 개인 적 으로 요청 헤더 에 있어 서 최종 적 으로 iso-8859-1 인 코딩 방식 으로 바 이 너 리 101010 인 코딩 을 해 야 하기 때 문 이 라 고 생각 합 니 다.중국어 등 특수 문 자 를 iso-8859-1 인 코딩 으로 직접 만 들 면 정 보 를 잃 어 버 릴 수 있 으 므 로 URL encode 를 먼저 만 드 는 것 이 필요 합 니 다.   2。서버 쪽(tomcat)은 어떻게 데 이 터 를 디 코딩 으로 가 져 옵 니까?
   첫 번 째 단 계 는 먼저 데 이 터 를 iso-8859-1 로 디 코딩 하 는 것 입 니 다.get 방법 에 있어 tomcat 에서 데 이 터 를 얻 는 것 은 ASCII 범위 내의 요청 헤더 문자 입 니 다.그 중의 요청 url 에는 매개 변수 데이터 가 있 습 니 다.만약 에 매개 변수 에 중국어 등 특수 문자 가 있다 면 현재 URL encode 후의%XY 상태 입 니 다.먼저 멈 추고 개발 자 들 이 일반적으로 데 이 터 를 얻 는 과정 을 말씀 드 리 겠 습 니 다.
보통 request.getParameter("name")에서 매개 변수 데 이 터 를 가 져 옵 니 다.저 희 는 request 대상 이나 얻 은 데 이 터 는 디 코딩 을 거 쳤 고 디 코딩 과정 에서 프로그램 에서 지정 할 수 없습니다.여기 서 말하자면 request.set CharacterEncoding("문자 집합")으로 디 코딩 방식 을 지정 할 수 있다 는 초보 자 들 이 많 습 니 다.사실은 안 됩 니 다.servlet 의 공식 API 설명 을 보면 이 방법 에 대한 설명 이 있 습 니 다.Overrides the name of the character encoding used in the body of this request.This method must be called prior to reading request parameters or reading input using getReader().get 방법 에 대해 서 는 어 쩔 수 없 음 을 알 수 있 습 니 다.그렇다면 도대체 어떤 인 코딩 방식 으로 데 이 터 를 디 코딩 하 는 것 입 니까?이것 은 tomcat 의 일 입 니 다.기본 적 으로 부족 한 것 은 iso-8859-1 입 니 다.그러면 우 리 는 왜 get 요청 에 중국어 파 라 메 터 를 가지 고 서버 에서 왜 어 지 러 운 코드 를 받 았 는 지 찾 을 수 있 습 니 다.이 유 는 클 라 이언 트 가 보통 UTF-8 또는 GBK 로 데이터 URL encode 를 사용 하기 때 문 입 니 다.여 기 는 iso-8859-1 방식 으로 URL decoder 가 분명히 안 됩 니 다.프로그램 에서 저희 가 직접...
Java   
new String(request.getParameter("name").getBytes("iso-8859-1"),"      URL encode    ") 
new String(request.getParameter("name").getBytes("iso-8859-1"),"      URL encode    ")

바이트 코드 를 복원 한 다음 에 정확 한 방식 으로 데 이 터 를 디 코딩 합 니 다.인터넷 의 글 은 보통 tomcat 에서 설정 합 니 다.
본인 의 해결 방법:js 에서 인 자 를 인 코딩 합 니 다.

 
 
     function goToPage(cusCode,currentYear,currentMonth,cusName){
      
      var url= "checkCityInvUpload.do?method=checkCityInvUploadDetail&cusCode=" + cusCode;
   <span>	</span>var location  = encodeURI(url);//js      
   <span>	</span>window.open(location);
     }




java.net.URLEncoder.encode(keywords)

1.JSP 와 페이지 매개 변수 사이 의 난 코드
JSP 가 페이지 파 라 메 터 를 가 져 올 때 시스템 의 기본 인 코딩 방식 을 사용 합 니 다.페이지 파라미터 의 인 코딩 형식 과 시스템 의 기본 인 코딩 형식 이 일치 하지 않 으 면 오류 가 발생 할 수 있 습 니 다.
이러한 난 코드 문 제 를 해결 하 는 기본 적 인 방법 은 페이지 에서 파 라 메 터 를 가 져 오기 전에 강제로 지정 하 는 것 이다.
request         :request.setCharacterEncoding("GBK") request.setCharacterEncoding("gb2312")。

servlet 이 JSP 에서 변 수 를 페이지 로 출력 할 때 오류 가 발생 하면,
      response.setContentType("text/html;charset=GBK") response.setContentType("text/html;charset=gb2312")  。

2.데이터 베 이 스 를 어 지 럽 히 는 이런 어 지 러 운 코드 는 데이터 베 이 스 를 삽입 한 중국 어 를 어 지 럽 히 거나 디 스 플레이 를 읽 을 때 도 어 지 럽 습 니 다.해결 방법 은 다음 과 같 습 니 다.
                  
  String Url="jdbc:mysql://localhost/digitgulf?user=root&password=root&useUnicode=true&characterEncoding=GB2312";
             :
  response.setContentType("text/html;charset=gb2312");
  request.setCharacterEncoding("gb2312");

3.중국 어 를 매개 변수 로 하여 어 지 러 운 코드 를 전달 할 때 우리 가 중국어 문 자 를 매개 변수 로 다른 페이지 를 전달 할 때 도 어 지 러 운 상황 이 발생 할 수 있 습 니 다.해결 방법 은 다음 과 같 습 니 다.
           ,  
  RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords)
                   
  keywords=new String(request.getParameter("keywords").getBytes("8859_1"));

4.JSP 중국어 난 장 판 문제 의 4:Get 방식 폼 전달 과 URI 방식 전달 매개 변수 난 장 판,tomcat 에 인 코딩 설정
해결 방안
apache-tomcat-6.0.18\conf\server.xml
        
< Connector port="8080" protocol="HTTP/1.1"     connectionTimeout="20000"     redirectPort="8443"  URIEncoding="GBK" />

5.b.jsp 에서 String name=request.getParameter("name");으로 변경
  
          String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"GB2312");

6.JSP 중국어 코드 문제 의 더 좋 은 해결 방법 은 필터 기술 을 사용 하 는 것 이다.
Encoding   

package com.htt;  

 import java.io.IOException; 

  import javax.servlet.Filter;  

 import javax.servlet.FilterChain;   import javax.servlet.FilterConfig;  

 import   javax.servlet.ServletException; 

  import javax.servlet.ServletRequest;  

 import javax.servlet.ServletResponse;  

 public class Encoding implements Filter {       

public void      destroy() {  }     

  public void doFilter(ServletRequest request, ServletResponse response,   FilterChain chain) throws IOException, ServletException {      

request.setCharacterEncoding("GBK");     

  chain.doFilter(request, response);     

  }      

 public void init(FilterConfig filterConfig) throws ServletException { } 

  }      

Web.xml      

< filter>     

< filter-name>encoding< /filter-name>    

 < filter-class>com.htt.Encoding< /filter-class>

  < /filter>  

< filter-mapping>    

 < filter-name>encoding< /filter-name> 

   < url-pattern>/ToCh_zn< /url-pattern>  

< /filter-mapping> 


좋은 웹페이지 즐겨찾기