잘못된 PHP 웹 서비스에 대한 해결 방법: 먼저 "nusoap.php" 파일을 연 다음 내용을 "var $soap_defencoding = 'UTF-8';" 및 "var $decode_utf8 = false;"로 수정합니다.
추천: "PHP 비디오 튜토리얼"
웹 서비스 호출을 위한 PHP 솔루션 중국어 왜곡 문자
작업 요구로 인해 동료 A Tao가 PHP에서 .net 웹 서비스 애플리케이션을 테스트하도록 도왔습니다. 나는 인터넷에서 정보를 찾기 시작했고 많은 PHP 튜토리얼이 nusoap을 사용한다는 것을 발견했습니다. 그래서 하나를 다운로드하고 함께 제공되는 예제로 수정했습니다. 코드는 기사 마지막에 있습니다.
<?php require_once('../nusoap/lib/nusoap.php'); $client = new soapclient('http://localhost/TestService/Service1.asmx?WSDL', true); $err = $client->getError(); if ($err) { echo '<h2>Constructor error</h2><pre class="brush:php;toolbar:false">' . $err . ''; } // Doc/lit parameters get wrapped $param = array('str' => 'China'); $result = $client->call('HelloWorld', array('parameters' => $param), '', '', false, true,'document','encoded'); // Check for a fault if ($client->fault) { echo '
'; print_r($result); echo ''; } else { // Check for errors $err = $client->getError(); if ($err) { // Display the error echo '
' . $err . ''; } else { // Display the result echo '
'; print_r($result); echo ''; } } echo '
' . htmlspecialchars($client->request, ENT_QUOTES) . ''; echo '
' . htmlspecialchars($client->response, ENT_QUOTES) . '';//开源代码最模板zuimoban.com echo '
' . htmlspecialchars($client->debug_str, ENT_QUOTES) . ''; ?>
내 웹 서비스에서 반환된 내용에 중국어가 없으면 위의 예는 성공하지만, 내 웹 서비스에서 반환된 내용에 중국어가 있으면 반환 값은 다음과 같습니다. 확인해 보세요. 응답 결과가 정확합니다. nusoap으로 처리할 때 문제가 있을 것입니다.
PHP 중단점 디버깅 도구를 설치하지 않았기 때문에(사실 그런 것이 있는지도 모르겠습니다.) a 도구) 그래서 방법은 하나밖에 없군요. 방법을 한번 살펴보니 nusoap.php에서 두 곳을 바꿔보니 괜찮더군요.
변경된 장소:
86行的:var $soap_defencoding = 'UTF-8'; 4998行的:var $decode_utf8 = false;
변경하지 않고 그대로 둘 수도 있지만 호출 시 인코딩을 지정해야 합니다.
$client = new soapclient('http://localhost/TestService/Service1.asmx?WSDL', true); $client->soap_defencoding = 'UTF-8'; $client->soap_defencoding = 'UTF-8';
효과는 동일합니다. 요청의 매개변수가 중국어인 경우에는 우편으로 보내거나, 작성해야 하는 경우 가져옵니다. 코드에 중국어 문자가 포함된 매개변수를 사용하려면 인코딩을 UTF8로 변환해야 합니다. 어쩌면 참조 첨부 파일입니다.
위 내용은 PHP 웹 서비스가 왜곡되면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!