Home  >  Article  >  Backend Development  >  How to solve the problem of garbled Chinese parameters in URL in PHP

How to solve the problem of garbled Chinese parameters in URL in PHP

藏色散人
藏色散人Original
2022-01-04 10:35:513692browse

php method to solve the problem of garbled Chinese parameters in url: 1. Use urlencode and urldecode functions to transcode; 2. Use "iconv("gb2312","UTF-8",$gonghui);" method Transcoding.

How to solve the problem of garbled Chinese parameters in URL in PHP

#The operating environment of this article: Windows 7 system, PHP version 7.1, Dell G3 computer.

How does php solve the problem of garbled Chinese parameters in url?

Collection of solutions to the problem of Chinese garbled characters being transmitted in the php url address bar

The Chinese characters in the php address bar are garbled after $_GET comes down, detailed explanation of the usage of urlencode and urldecode
URL encoding
Syntax: string urlencode(string str);
Return value: String
Function type: Encoding processing
For example:

The code is as follows:

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

url decoding
Restore URL encoded string.
Syntax: string urldecode(string str);
Return value: string
Function type: Encoding processing
For example:
Process and display the Chinese passed in front

The code is as follows:

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

About the problem of Chinese garbled characters obtained from the url using the get method in PHP

Use $gonghui = iconv("gb2312"," UTF-8",$gonghui); Another method code

/**
* 多字节字符串编码转换函数
*
* @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 function is PHP's internal multi-byte string encoding conversion function, which can support almost all encodings when needed. PHP >= 4.0.6, 5 versions supported.

Get reg.php?gh=XX directly;

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

The $gonghui obtained is gb2312 encoded and output to the utf-8 web page to display garbled characters

Change When it becomes

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

, it will display normally.

Convert the entire page.

This method is applicable to all coding environments. In this way, the character set other than the first 128 characters (display characters) is represented by NCR (Numeric character reference, such as "Chinese characters" will be converted into the form "汉字"). This encoding is The page can be displayed normally in any coding environment.

Add the following three lines of code to the head of the php file:

The code is as follows:

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

Using the mb_convert_encoding function requires enabling PHP's mbstring (multi-byte string) extension .

If the mbstring extension of PHP is not enabled, you need to make the following settings to allow PHP to support the extension.

1. Windows server environment
Edit the php.ini file, remove the ; in front of extension=php_mbstring.dll, and restart the web server.

2. Linux server environment
Add the --enable-mbstring=cn compilation parameter when compiling the configuration, and then compile and install PHP.

The third reference method of other netizens:

//方法一 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;;
?>

Another page uses base64_decode to unlock

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 ~]#

Recommended learning: "PHP video tutorial

The above is the detailed content of How to solve the problem of garbled Chinese parameters in URL in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Does php have reflection?Next article:Does php have reflection?