Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan masalah parameter Cina yang kacau dalam URL dalam PHP

Bagaimana untuk menyelesaikan masalah parameter Cina yang kacau dalam URL dalam PHP

藏色散人
藏色散人asal
2022-01-04 10:35:513693semak imbas

kaedah php untuk menyelesaikan masalah parameter Cina bercelaru dalam URL: 1. Gunakan fungsi urlencode dan urldecode untuk transcode; 2. Gunakan "iconv("gb2312","UTF-8",$gonghui);" kaedah Transcoding.

Bagaimana untuk menyelesaikan masalah parameter Cina yang kacau dalam URL dalam PHP

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer Dell G3.

Bagaimanakah PHP menyelesaikan masalah parameter Cina bercelaru dalam url?

Himpunan penyelesaian kepada aksara Cina yang kacau-bilau yang dihantar dalam bar alamat url php

$_GET Cina dalam bar alamat php bercelaru dan penggunaan urlencode dan urldecode diterangkan secara terperinci
Pengekodan URL
sintaks: string urlencode(string str
nilai pulangan: string
jenis fungsi: pemprosesan pengekodan
Contohnya:

Kodnya adalah seperti berikut:

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

penyahkodan url
Pulihkan rentetan yang dikodkan URL.
Sintaks: string urldecode(string str);
Nilai pulangan: String
Jenis fungsi: Pemprosesan pengekodan
Contohnya:
Proses dan paparkan teks Cina yang diluluskan sebelum ini

Kodnya adalah seperti berikut:

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

Mengenai masalah aksara Cina bercelaru yang diperolehi daripada url menggunakan kaedah get dalam PHP

Gunakan $gonghui = iconv("gb2312" ,"UTF-8",$gonghui); Kod kaedah lain

/**
* 多字节字符串编码转换函数
*
* @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] )
**/

fungsi mb_convert_encoding ialah fungsi penukaran pengekodan rentetan berbilang bait PHP, yang boleh digunakan dalam hampir semua keadaan di mana ia perlu Semua pengekodan disokong. PHP >= 4.0.6, 5 versi disokong.

Dapatkan reg.php?gh=XX terus;

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

$gonghui yang diperolehi adalah gb2312 dikodkan dan dikeluarkan ke halaman web utf-8, yang memaparkan aksara bercelaru

Tukar kepada

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

dan ia akan dipaparkan seperti biasa

Tukar keseluruhan halaman

Kaedah ini boleh digunakan untuk semua persekitaran pengekodan. Dengan cara ini, set aksara selain daripada 128 aksara pertama (aksara paparan) diwakili oleh NCR (Rujukan aksara angka, seperti "aksara Cina" akan ditukar kepada bentuk "汉字"). Pengekodan ini ialah Halaman boleh dipaparkan seperti biasa dalam mana-mana persekitaran pengekodan.

Tambahkan tiga baris kod berikut pada kepala fail php:

Kod adalah seperti berikut:

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

Menggunakan fungsi mb_convert_encoding memerlukan mendayakan mbstring PHP (rentetan berbilang bait ) sambungan.

Jika sambungan mbstring PHP tidak didayakan, anda perlu membuat tetapan berikut untuk membenarkan PHP menyokong sambungan.

1. Persekitaran pelayan Windows
Edit fail php.ini, keluarkan ; di hadapan extension=php_mbstring.dll, dan mulakan semula pelayan web.

2. Persekitaran pelayan Linux
Tambahkan parameter kompilasi --enable-mbstring=cn apabila menyusun konfigurasi, dan kemudian susun dan pasang PHP.

Kaedah rujukan ketiga daripada netizen lain:

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

Halaman lain menggunakan base64_decode untuk menyahkod

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

Disyorkan Kajian: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah parameter Cina yang kacau dalam URL dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Adakah php mempunyai refleksi?Artikel seterusnya:Adakah php mempunyai refleksi?