程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> thinkphp 關於iis上面中文參數亂碼問題

thinkphp 關於iis上面中文參數亂碼問題

編輯:關於PHP編程

thinkphp 關於iis上面中文參數亂碼問題


第一種方法: 在使用 ?id="中文" 傳遞中文參數時,出現了亂碼,這是經過了二次轉碼後的結果,其中,在 php 中,url 中是不可以直接傳輸中文的,對於這點,一直心存不滿,沒辦法呀,誰讓咱沒一套解決方案呢,不知道別的語言是不是也出現這樣的問題。 對於網上所說的在首頁添加 header("content-type:text/html;charset=utf-8"); 這樣的代碼,以及把數據庫頁面等等設置成 utf8 的解決方案根本無效,始終傳遞過來的中文是亂碼。 盡管站點PHP我都是用的統一的 utf8 編碼,但始終傳遞過去是亂碼,後來測試了幾個浏覽器,發現 360 可以傳遞過去,而 IE 不行,後來再使用 $msg = iconv('gbk','utf-8',$_GET["msg"]); 進行轉換,測試幾個浏覽器後,大多還是顯示亂碼的問題。 最後總結了一點,對於 GET[] 過去的值,url 中不可以直接傳輸中文,如果必須要傳輸的話,用 urlencode() 方法來處理中文。對於 POST[]  不知道怎麼樣,暫時還沒有做過實驗。 看來也只有用 urlencode() 方法來處理中文了,在傳遞之前要先進行編碼,傳遞過去之後再進行解決就可以了,那麼利用如下兩個函數:編碼:".urlencode('中文').",解碼:".urldecode('中文').",括號裡的中文就是傳遞的字符了。 如下:傳遞頁面先進行編碼:td.php?id=".urlencode('中文').",接受頁面進行解碼即可:urldecode(id)."。   第二種方法: 如果gbk編碼的頁面生成的地址鏈接到utf-8的頁面,gbk頁面的中文是按照gbk的格式編碼傳送給下個頁面,那麼utf-8編碼接收後肯定會出現亂碼。 IIS的url重寫模塊,重寫後的中文編碼也是gbk,如果你的頁面是utf-8編碼,那麼重寫參數將會失效。像這些情況,我們就需要使用php內置的轉碼函數來處理編碼問題了: 方案1: $name = iconv("gbk","utf-8",$name); 方案2: mb_convert_encoding($name, "utf-8", "gbk");

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved