>  기사  >  백엔드 개발  >  PHP URL 주소 표시줄에 전송되는 중국어 왜곡 문자에 대한 솔루션 모음

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

高洛峰
高洛峰원래의
2017-01-12 15:02:241602검색

PHP 주소 표시줄의 중국어 $_GET이 깨져서 urlencode, urldecode 사용법이 자세히 설명되어 있습니다.
url 인코딩
구문: string urlencode(string str);
반환값: string
기능 유형: 인코딩 처리
예:

<?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에서 get 메소드를 사용하여 URL에서 얻은 중국어 문자가 왜곡되는 문제

$gonghui = iconv("gb2312","UTF-8",$gonghui); 사용
/* *
* 멀티바이트 문자열 인코딩 변환 함수
*
* @param string str 인코딩 및 변환이 필요한 문자열
* @param string to_encoding은 다음과 같은 특정 인코딩으로의 변환을 지정합니다. : gb2312, gbk, utf-8 등
* @param mix from_encoding은 원래 문자열의 인코딩을 혼합 지정합니다. 예: JIS, eucjp-win, sjis-win 혼합 인코딩을 동시에 지정
* @return string
string mb_convert_encoding ( string str, string to_encoding [, mix from_encoding] )
**/
mb_convert_encoding 함수는 PHP의 내부 멀티바이트 문자열 인코딩 변환 함수로, 필요할 때 거의 모든 인코딩을 지원할 수 있습니다. PHP >= 4.0.6, 5개 버전이 지원됩니다.

reg.php?gh=XX 직접 가져오기

// Union 로그인 매개변수

$gonghui = $_GET['gh'];

획득한 $gonghui는 gb2312로 인코딩되어 잘못된 문자를 표시하기 위해 utf-8 웹페이지에 출력됩니다.

로 변경됨 // Union 로그인 매개변수
$gonghui = $_GET['gh' ];
$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를 컴파일하고 설치합니다.

다른 네티즌의 세 번째 참고 방법:
//방법 1 urldecode
$url = 'aaa.php?region='.urldecode("사천성");
< ; a href="5616aa3af0b068e40ca2d7d2d5907ac5">aaa 5db79b134e9f6b82c0b36e0489ee08ed

//방법 2 base64_encode

27c6a7756ed9c656b3ac7c21915644b5aaa 5db79b134e9f6b82c0b36e0489ee08ed'; 🎜>?>

base64_decode를 사용하여 다른 페이지 디코딩

base64_decode($region);

//방법 3을 사용하면 서버가 중국어를 지원합니다

[root@dhcp ~]# 로케일

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. -8"
lc_all=
[root@dhcp ~]#

PHP URL 주소 표시줄의 중국어 왜곡 문자에 대한 더 많은 솔루션 모음을 보려면 PHP 중국어 웹사이트에 주목하세요!

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