Maison  >  Article  >  développement back-end  >  Comment résoudre le problème des paramètres chinois tronqués dans l'URL en PHP

Comment résoudre le problème des paramètres chinois tronqués dans l'URL en PHP

藏色散人
藏色散人original
2022-01-04 10:35:513675parcourir

Méthode PHP pour résoudre le problème de la transmission de paramètres chinois tronqués dans les URL : 1. Utilisez les fonctions urlencode et urldecode pour transcoder ; 2. Transcodez via "iconv("gb2312","UTF-8",$gonghui);".

Comment résoudre le problème des paramètres chinois tronqués dans l'URL en PHP

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur Dell G3.

Comment PHP résout-il le problème des paramètres chinois tronqués dans les URL ?

Une collection de solutions aux caractères chinois tronqués transmis dans la barre d'adresse php

Le $_GET chinois dans la barre d'adresse php est tronqué, explication détaillée de l'utilisation de l'urlencode et de l'urldecode
encodage de l'url
Syntaxe : chaîne urlencode(string str);
Valeur de retour : String
Type de fonction : Traitement d'encodage
Par exemple :

Le code est le suivant :

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

décodage d'url
Restaurer la chaîne encodée de l'URL.
Syntaxe : string urldecode(string str);
Valeur de retour : String
Type de fonction : Traitement de l'encodage
Par exemple :
Traiter et afficher le chinois passé devant

Le code est le suivant :

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

À propos de l'utilisation du méthode get en PHP Le problème des caractères chinois tronqués obtenus à partir de l'url

Utilisez $gonghui = iconv("gb2312","UTF-8",$gonghui); un autre code de méthode

/**
* 多字节字符串编码转换函数
*
* @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 est la fonction interne de php codage de chaîne multi-octets La fonction de conversion peut être utilisée en cas de besoin et prend en charge presque tous les codages. PHP >= 4.0.6, 5 versions prises en charge.

Obtenez directement reg.php?gh=XX ;

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

Le $gonghui obtenu est encodé en gb2312 et affiché sur la page Web utf-8, qui affiche des caractères tronqués

Changez-le en

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

et l'affichage sera normal

Entrez la conversion de la page entière

Cette méthode convient à tous les environnements de codage. De cette façon, le jeu de caractères autre que les 128 premiers caractères (caractères d'affichage) est représenté par NCR (la référence de caractère numérique, telle que "caractères chinois" sera convertie sous la forme "汉字"). Cet encodage est La page peut être affichée normalement dans n'importe quel environnement de codage.

Ajoutez les trois lignes de code suivantes en tête du fichier php :

Le code est le suivant :

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

L'utilisation de la fonction mb_convert_encoding nécessite d'activer l'extension mbstring (chaîne multi-octets) de PHP.

Si l'extension mbstring de PHP n'est pas activée, vous devez définir les paramètres suivants pour que PHP prenne en charge l'extension.

1. Environnement du serveur Windows
Modifiez le fichier php.ini, supprimez le ; devant extension=php_mbstring.dll et redémarrez le serveur Web.

2. Environnement de serveur Linux
Ajoutez le paramètre de compilation --enable-mbstring=cn lors de la compilation et de la configuration, puis compilez et installez PHP.

La troisième méthode de référence d'autres internautes :

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

Une autre page utilise base64_decode pour décoder

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

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn