『壹』 php urlencode點擊按鈕gb2312/utf-8 解碼
先將gbk轉utf8再編碼,解碼後再將utf8轉gbk
『貳』 PHP的。UTF-8編碼的網頁下面,如何將urlencode轉成GB2312編碼的
echo urlencode(iconv('utf-8', 'gb2312', '中國人'));
先把 中國人 編碼轉成 gb2312,然後再urlencode編碼一次
『叄』 php頁面解決亂碼問題
1、文件編碼:指的是頁面文件(.html,.php等)本身是以何種編碼來保存的。記事本和Dreamweaver在打開頁面時候會自動識別文件編碼因而不太會出問題。而ZendStudio卻不會自動識別編碼,它只會根據首選項的配置固定以某種編碼打開文件,如果工作時候一不注意,用錯誤編碼打開文件,做了修改之後一保存,亂碼就出現了(我深有體會)。
2、頁面申明編碼:在HTML代碼HEAD裡面,可以用<meta http-equiv="Content-Type" content="text/html; charset="XXX" />來告訴瀏覽器網頁採用了什麼編碼,目前中文網站開發中XXX主要用的是GB2312和UTF-8兩種編碼。
3、資料庫連接編碼:指的是進行資料庫操作時候以哪種編碼與資料庫傳輸數據,這里需要注意的是不要與資料庫本身的編碼混淆,比如MySQL內部默認是latin1編碼,也就是說Mysql是以latin1編碼來存儲數據,以其他編碼傳輸給Mysql的數據會被轉換成latin1編碼。
知道了WEB開發中哪些地方涉及到了編碼,也就知道了PHP頁面亂碼產生的原因:上述3項編碼設置不一致,由於各種編碼絕大部分是兼容ASCII的,所以英文符號不會出現,中文就倒霉了。下面是一些常見的錯誤情況與解決:
1、資料庫採用UTF8編碼,而頁面申明編碼是GB2312,這是最常見的產生亂碼的原因。這時候在PHP腳本裡面直接SELECT數據出來的就是PHP頁面亂碼,需要在查詢前先使用:
mysql_query("SET NAMES GBK"); 來設定MYSQL連接編碼,保證頁面申明編碼與這里設定的連接編碼一致(GBK是GB2312的擴展)。如果頁面是UTF-8編碼的話,可以用:
mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如頁面申明的編碼與資料庫內部編碼一致可以不設定連接編碼。
註:事實上MYSQL的數據輸入輸出比上面講的更復雜一些,MYSQL配置文件my.ini中定義了2個默認編碼,分別是[client]里的default-character-set和[mysqld]里的default-character-set來分別設定默認時候客戶端連接和資料庫內部所採用的編碼。我們上面指定的編碼其實是MYSQL客戶端連接伺服器時候的命令行參數character_set_client,來告訴MYSQL伺服器接受到的客戶端數據是什麼編碼的,而不是採用默認編碼。
2、頁面申明編碼與文件本身編碼不一致,這種情況很少發生,因為如果編碼不一致美工做頁面時候在瀏覽器看到的就是亂碼了。更多時候是發布以後修改一些小BUG,以錯誤編碼打開頁面然後保存導致的。或者是用某些FTP軟體直接在線修改文件,比如CuteFTP,由於軟體編碼配置錯誤而導致轉換錯了編碼。
3、一些租用虛擬主機的朋友,明明上述3項編碼都設置正確了還是有PHP頁面亂碼。比方說網頁是GB2312編碼的,IE等瀏覽器打開卻總是識別成UTF-8,網頁HEAD裡面已經申明是GB2312了,手動修改瀏覽器編碼為GB2312後頁面顯示正常。產生原因是伺服器Apache設定了伺服器全局的默認編碼,在httpd.conf裡面加了AddDefaultCharset UTF-8。這時候伺服器會首先發送HTTP頭給瀏覽器,其優先順序比頁面里申明編碼高,自然瀏覽器就識別錯了。解決辦法有2個,請管理員在配置文件自己的虛機里加上一條AddDefaultCharset GB2312來覆蓋全局配置,或者在自己目錄的.htaccess里配置。
『肆』 php中urldecode()和urlencode()起什麼作用啊
urlencode()編碼:對字元串中除了 -_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進制數,空格則編碼為加號(+)。
urldecode()解碼:還原 URL 編碼字元串。
示例:
<?php
header("Content-Type:text/html; charset=utf-8");
//對參數值進行編碼
$parm=urlencode("演示php-mysql");
//拼接url
$url="decode.php?par=".$parm;
?>
<a href="<?php echo $url;?>">urlencode演示</a>
點擊連接後地址欄中漢字被編碼了:
http://localhost/decode.php?par=%E6%BC%94%E7%A4%BAphp-mysql
------------------------------------------------------------------------
//decode.php
<?php
//獲取參數值
$parValue=$_GET['par'];
//解碼
echo urldecode($parValue);
//運行結果:演示php-mysql
?>
『伍』 PHP函數urlencode和urldecode的問題。
很明顯,這個編碼函數有另外一個參數。就是指定編碼方式的。
如果你安裝utf-8編碼進行編碼的話,就和原來的不一樣。
當你換成gb2312的時候就一樣了。
因為選擇的默認編碼方式不同,所以會出現不同的結果。
『陸』 為什麼php中用了urlencode處理字元串後,瀏覽器自動又轉了回來
有兩中解決辦法:
1.文件編碼改為ansi類型的,
2.文件類型還是為utf-8的,
$bdc_music_title_encode=urlencode($bdc_music_title_encode);
改為:
$bdc_music_title_encode=iconv('utf-8','gbk',$bdc_music_title_encode);
$bdc_music_title_encode=urlencode($bdc_music_title_encode);
『柒』 PHP系統UTF-8編碼在IIS下rewrite中文怎麼處理
這個實際是兩個問題:一個是web server的rewrite。一個是對於pathinfo中漢字的處理問題。
先說第一個:如果你用的是apache,那添加以下配置就可以了
RewriteRule ^/tag/([^\?]*) /e/sch/index.php?keyword=$1 [L,NC]
作用是偽靜態
第二個需要你的php進行編碼識別處理。apache收到的請求里,url永遠不會是你希望的漢字,而是瀏覽器根據自己的規則進行了urlencode的結果,但究竟是使用utf8還是gbk進行urlencode,不同的瀏覽器策略不同。url的不同位置(pathinfo和query_string)也不同。如果你希望能夠取到正確的漢字,自己在php里進行編碼識別和轉換吧
『捌』 php中輸出字元串的utf-8編碼
比如輸入「呵」,輸出%E5%91%B5
這個是urlencode的...
『玖』 如何用php設置utf-8編碼
在你的源文件找到<meta http-equiv="content-type" content="text/html;charset=utf-8">charset= 後面接的就是編碼,你全部改了就可以了。如果你改了之後變成亂碼的話,那你就只能先建一個utf-8編碼的網頁,把相應的內容重新輸入進去。
『拾』 urlencode php 編碼轉換
wml頁面用UTF8先。。
不然很多手機不支持。
還有utf8中文和gb中文 urlEncode後的東西是不一樣的!
沒搞過PHP,所以不清楚你轉轉去干什麼?
總感覺編碼太混亂。。
不過我以前傳中文,都是用POST串的。