>  기사  >  백엔드 개발  >  PHP URL의 중국어 매개변수가 왜곡되는 문제를 해결하는 방법

PHP URL의 중국어 매개변수가 왜곡되는 문제를 해결하는 방법

藏色散人
藏色散人원래의
2022-01-04 10:35:513598검색

URL에서 잘못된 중국어 매개변수 전송 문제를 해결하는 PHP의 방법: 1. urlencode 및 urldecode 기능을 사용하여 트랜스코딩합니다. 2. "iconv("gb2312","UTF-8",$gonghui);"를 통해 트랜스코딩합니다.

PHP URL의 중국어 매개변수가 왜곡되는 문제를 해결하는 방법

이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, Dell G3 컴퓨터.

PHP는 URL에서 중국어 매개변수가 왜곡되는 문제를 어떻게 해결합니까?

PHP 주소 표시줄에 전송되는 중국어 왜곡 문자에 대한 솔루션 모음

PHP 주소 표시줄의 중국어 $_GET이 왜곡되어 있습니다. urlencode 및 urldecode 사용에 대한 자세한 설명
url 인코딩
구문: 문자열 urlencode(string str);
반환 값: 문자열
함수 유형: 인코딩 처리
예:

코드는 다음과 같습니다:

<?php
$ChineseName="我的名字,是中文的哦";
$EncodeStr=urlencode($ChineseName);
echo "<a href=/cgi/personal.cgi?name=$EncodeStr>我的名字</a>";
?>

url 디코딩
URL 인코딩된 문자열을 복원합니다.
구문: string urldecode(string str);
반환값: 문자열
함수 종류: 인코딩 처리
예:
앞에 전달된 중국어를 처리하여 표시

코드는 다음과 같습니다.

<?php
$DecodeStr=urldecode($_GET[&#39;name&#39;]);//你可能不用解码都可以,因为浏览器会自动帮你解码
echo $DecodeStr;
?>

사용 방법 PHP의 메소드 가져오기 url에서 얻은 중국어 문자 문제 문제
Use $gonghui = iconv("gb2312","UTF-8",$gonghui); 또 다른 메소드 코드

/**
* 多字节字符串编码转换函数
*
* @param string str 需要进行编码转换的字符串
* @param string to_encoding 指定转换为某种编码,如:gb2312、gbk、utf-8等
* @param mixed from_encoding 混合指定原来字串的编码,如:同时指定 JIS, eucjp-win, sjis-win 混合编码
* @return string
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
**/

mb_convert_encoding 함수는 PHP 내부입니다. 멀티바이트 문자열 인코딩 변환 기능은 필요할 때 사용할 수 있으며 거의 ​​모든 인코딩을 지원합니다. PHP >= 4.0.6, 5개 버전이 지원됩니다.


reg.php?gh=XX를 직접 가져옵니다.

 //工会登入参
$gonghui = $_GET[&#39;gh&#39;];

얻은 $gonghui는 gb2312로 인코딩되어 utf-8 웹페이지에 출력되며, 문자가 깨져 표시됩니다

 //工会登入参数
 $gonghui = $_GET[&#39;gh&#39;];
 $gonghui = mb_convert_encoding($gonghui, "UTF-8", "gb2312");

로 변경하면 정상적으로 표시됩니다

전체 페이지 변환 조정

이 방법은 모든 코딩 환경에 적합합니다. 이런 방식으로 처음 128자(표시 문자) 이외의 문자 집합은 NCR로 표시됩니다("한자"와 같은 숫자 문자 참조는 "汉字" 형식으로 변환됩니다). 이 인코딩은 어떤 코딩 환경에서도 페이지가 정상적으로 표시될 수 있습니다.

php 파일의 헤드에 다음 세 줄의 코드를 추가하세요.

코드는 다음과 같습니다.

mb_internal_encoding("gb2312");  // 这里的gb2312是你网站原来的编码     
mb_http_output("HTML-ENTITIES");     
ob_start(&#39;mb_output_handler&#39;);

mb_convert_encoding 함수를 사용하려면 PHP의 mbstring(멀티바이트 문자열) 확장을 활성화해야 합니다.

PHP의 mbstring 확장이 활성화되지 않은 경우, PHP가 확장을 지원하도록 하려면 다음 설정을 지정해야 합니다.

1. Windows 서버 환경

php.ini 파일을 편집하고 확장명=php_mbstring.dll 앞의 ;를 제거한 후 웹 서버를 다시 시작하세요.

2. Linux 서버 환경

컴파일 및 구성 시 --enable-mbstring=cn 컴파일 매개변수를 추가한 후 PHP를 컴파일하고 설치합니다.

다른 네티즌의 세 번째 참조 방법:

//方法一 urldecode
$url = &#39;aaa.php?region=&#39;.urldecode("四川省");
<a href="<?php echo $url;?>">aaa </a>
//方法二base64_encode
<?
$test="四川省";
$test1=base64_encode($test);
echo &#39;<a href="www.jb51.net?region=$test1">aaa </a>&#39;;
?>

다른 페이지는 base64_decode를 사용하여

base64_decode($region);
//方法三让服务器支持中文
[root@dhcp ~]# locale
lang=zh_cn.utf-8
lc_ctype="zh_cn.utf-8"
lc_numeric="zh_cn.utf-8"
lc_time=c
lc_collate=c
lc_monetary="zh_cn.utf-8"
lc_messages="zh_cn.utf-8"
lc_paper="zh_cn.utf-8"
lc_name="zh_cn.utf-8"
lc_address="zh_cn.utf-8"
lc_telephone="zh_cn.utf-8"
lc_measurement="zh_cn.utf-8"
lc_identification="zh_cn.utf-8"
lc_all=
[root@dhcp ~]#

디코딩합니다. 추천 학습: "

PHP 비디오 튜토리얼"

위 내용은 PHP URL의 중국어 매개변수가 왜곡되는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.