AJAX 중국어 난 코드 PHP 에서 완벽 한 해결 방법

최근 한 프로젝트 를 하 다가 AJAX 중국어 난 장 판 문제 에 부 딪 혀 오후 내 내 노력 끝 에 완벽 하 게 해결 되 었 습 니 다.이 문제 에 얽 매 여 골 치 아 픈 사람들 에 게 도움 이 되 기 를 바 랍 니 다.알다 시 피 AJAX 를 사용 하여 중국어 인 자 를 전송 하고 받 을 때 클 라 이언 트 와 서버 에서 해당 하 는 처 리 를 하지 않 으 면 어 지 러 운 문제 가 발생 할 수 있 습 니 다.인터넷 에 해당 하 는 글 도 적지 않 지만 그 중에서 자신의 이상 에 맞 는 답 을 찾기 어 려 운 경우 가 있 습 니 다.저 는 오늘 인터넷 에서 많은 것 을 찾 았 습 니 다.하지만 차이 가 많 지 않 습 니 다.ASP 와 JSP 가 비교적 많 습 니 다(저 는 PHP 를 사용 합 니 다).그래서 끝까지 마음 에 드 는 답 을 찾 지 못 했 습 니 다.AJAX 의 중국어 난 코드 는 크게 두 가지 로 나 눌 수 있 습 니 다.첫 번 째 는 서버 에 중국어 인 자 를 보 낼 때(xmlhttp.open("getpost",url,true)입 니 다.서버 에서 받 은 것 은 난 코드 입 니 다.이것 도 제 가 오늘 겪 은 문제 입 니 다.처리 하기 전에 IE 에 서 는 정상 이 었 지만 Firefox 에 서 는 난 코드 가 발생 했 습 니 다.제 가 먼저 받 은 인 자 를 한 텍스트 에 출력 하 겠 습 니 다.아무 문제 도 발견 하지 못 하고 답답 해 졌 습 니 다.그리고 저 는 검색 어 를 출력 에서 관찰 했 습 니 다.(저 는 데이터베이스 에서 매개 변수 와 관련 된 것 을 찾 으 려 고 합 니 다)마침내 문 제 를 발 견 했 습 니 다.IE 와 Firefox 가 출력 한 매개 변수 가 다 릅 니 다.한자 적 으로 모두 같 지만 앞 뒤 연결 과 작은 차이 가 있 습 니 다.그래서 인 코딩 문제 라 고 인정 하고 인터넷 에서 관련 자 료 를 찾 았 습 니 다.문 제 를 해결 하지 못 했 지만 시사 점 을 받 았 습 니 다.AJAX 가 데 이 터 를 보 내 는 것 은 모두 UTF-8 인 코딩 으로 보 내 는 것 이기 때문에 서버 에서 인 코딩 전환 을 해 야 합 니 다.$str); 그리고 테스트 를 통 해 Firefox 에서 문 제 를 순조롭게 해 결 했 습 니 다.큰 공고 가 된 줄 알 았 는데 IE 에서 테스트 를 했 더 니 IE 에 또 문제 가 생 겼 습 니 다.서버 에서 받 은 매개 변수 가 가치 가 없어 서 답답 합 니 다.갑자기 발송 헤드 에 setRequestHeader("Content-Type","application/x-www-form-urlencoded")가 설정 되 어 있 는 것 을 보 았 습 니 다.문제 의 소 재 를 찾 았 습 니 다.그리고 그곳 에서 매개 변수 인 코딩 을 했 습 니 다
 
geturl=encodeURI(geturl);
geturl=encodeURI(geturl); // geturl=encodeURI(encodeURI(geturl));
xmlhttp.open("GET",geturl,true);
그리고 서버 에 가서 URL 디 코딩 을 했 습 니 다
 
$str=urldecode($str); //
$ str =iconv("UTF-8","GB2312",$ str); //
주의:디 코딩 은 인 코딩 전환 앞 에 있어 야 합 니 다.그렇지 않 으 면 정확 한 값 저장 테스트 를 받 지 못 하고 IE 와 Firefox 가 정상 입 니 다.두 번 째 는 서버 측 이 클 라 이언 트 에 중국 어 를 출력 할 때 오류 가 발생 하 는 것 입 니 다.이런 문 제 는 인터넷 에서 답 이 많 고 해결 할 수 있 습 니 다.여러분 이 다시 찾 지 않도록 저 는 여기 서 COPY 에서 J 를 내 리 겠 습 니 다.AJAX 는 responseText 나 responseXML 의 값 을 받 을 때 UTF-8 형식 으로 디 코딩 합 니 다.만약 에 서버 세그먼트 에서 보 낸 데이터 가 UTF-8 형식 이 아니라면...그러면 responseText 나 responseXML 의 값 을 받 는 것 은 어 지 러 울 수 있 습 니 다.해결 방법:서버 에서 데 이 터 를 보 내 는 형식 을 지정 합 니 다.jsp 파일 에서 response.setContentType("text/text;charset=UTF-8");//txt 텍스트 파일 이나 response.set ContentType("text/xml;charset=UTF-8");//되 돌아 오 는 xml 파일 PHP:header('Content-Type:text/html;charset=GB2312'); ASP:Response.Charset("GB2312") JSP:response.setHeader("Charset","GB2312");

좋은 웹페이지 즐겨찾기