Android 애플리케이션이 PHP 백엔드 데이터베이스와 상호 작용할 때 중국의 garbled 코드는 일반적인 문제입니다. 이 기사는 개발자가 중국의 차량 코드를 피하고 해결하고 데이터 전송의 정확성을 보장 할 수 있도록 다양한 실용적인 방법을 소개합니다.
PHP 측이 데이터베이스에서 데이터를 얻는 경우 데이터는 일반적으로 UTF-8 형식으로 인코딩됩니다. 따라서 데이터베이스 및 데이터 테이블의 문자 세트가 UTF8 또는 UTF8MB4로 설정되어 있는지 확인하는 것이 가장 중요합니다.
MySQL 구성 파일 my.cnf 에서 다음 구성을 추가하십시오.
[mysqld] 문자 세트 서버 = UTF8 Collation-Server = utf8_general_ci
수정 후 MySQL 서비스를 다시 시작하십시오. 다음 SQL 명령을 실행하여 문자 세트 설정을 확인하십시오.
'%문자%'와 같은 변수를 표시합니다.
반환 된 결과에 설정된 문자가 UTF8 또는 UTF8MB4 인 경우 구성이 성공적입니다.
데이터베이스에 연결 한 후에는 데이터 상호 작용 코드가 일관되도록 PHP 코드에서 UTF8로 설정된 문자를 명시 적으로 설정하는 것이 좋습니다.
<?php $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); mysqli_set_charset($conn, "utf8"); ?>
Android 측에서 HTTP 요청을 보낼 때는 요청 및 응답 중에 차량 코드를 방지하기 위해 문자 인코딩을 UTF-8로 지정해야합니다.
노력하다 { url url = new URL ( "http://www.example.com"); httpurlConnection Connection = (httpurlConnection) url.openConnection (); Connection.setRequestMethod ( "get"); Connection.setRequestProperty ( "허용-차 세트", "UTF-8"); inputStream responsinputStream = connection.getInputStream (); } catch (ioexception e) { e.printstacktrace (); }
노력하다 { defaulthttpclient httpclient = new defaulthttpclient (); httpget httpget = new httpget ( "http://www.example.com"); httpget.setheader ( "accept-charset", "utf-8"); httpresponse 응답 = httpclient.execute (httpget); httpentity entity = response.getentity (); inputStream inputStream = entity.getContent (); } catch (ioexception e) { e.printstacktrace (); }
또 다른 일반적인 솔루션은 전송 중에 차량 코드를 피하기 위해 중국 내용을 URL 인코딩하는 것입니다. Android에서는 java.net.urlencoder를 사용할 수 있습니다.
문자열 str = "중국 문자열"; 문자열 encodedstr = urlencoder.encode (str, "utf-8");
PHP 측에서 수신 한 후 UrlDecode 함수를 사용하여 DECODE를 사용하십시오.
$ str = "url%20%e7%bc%96%e7%a0%81"; $ decodedstr = urldecode ($ str);
MySQL 데이터베이스 문자 세트, PHP 연결 문자 세트를 합리적으로 설정하고 Android 클라이언트의 요청 인코딩을 명시 적으로 지정함으로써 중국어의 문제를 효과적으로 피할 수 있습니다. 또한 중국어로 URL 인코딩도 실용적인 보조 방법입니다. 개발 프로세스 중에 위의 솔루션은 실제 요구에 따라 유연하게 채택되어 데이터 전송의 정확성과 안정성을 보장 할 수 있습니다.