php字元串轉碼
㈠ php中中文如何轉碼
應該是沒有URL編碼(一般來說,用默認字元集是沒有問題的)。
URL編碼/解碼,可用函數urlencode()與urldecode()。
還有一個小問題,你有個地方打錯了,在表單中把playerName打成了playerNmae,而iframe的URL中卻是playerName。
iframe代碼改為(你的拼寫錯誤已修正):
<iframeid="aaa"name="aaa"width="600"height="500"src="網址/playerDetail.php?serverName=<?phpechourlencode($_GET["serverName"]);?>&playerName=<?phpechourlencode($_GET["playerName"]);?>"></iframe>
表單代碼改為:
<formaction="22.php"method="get">
伺服器:<inputtype="text"name="serverName"/><br/>
玩家名:<inputtype="text"name="playerName"/><br/>
<inputtype="submit"/>
</form>
再試試?
㈡ php如何轉碼字元串,有啥區別
一般情況用iconv和mb_convert_encoding舊可以解決轉碼問題,下面我列舉幾個case詳細解釋一下:
上面是幾個case對應的不同轉化結果,為什麼會有區別呢?首先看一下規范傳參說明:
iconv ( string $in_charset , string $out_charset , string $str ),
如果你在 out_charset 後添加了字元串 //TRANSLIT,將啟用轉寫(transliteration)功能。這個意思是,當一個字元不能被目標字元集所表示時,它可以通過一個或多個形似的字元來近似表達。
如果你添加了字元串 //IGNORE,不能以目標字元集表達的字元將被默默丟棄。 否則, str 從第一個無效字元開始截斷並導致一個 E_NOTICE
如果out_charset 後面無添加字元串,會從第一個不能識別的字元開始截斷,並生成一個E_NOTICE。因此後邊的內容被丟棄了
當$value=""時,utf8_to_gbk轉碼結果是false,mb_convert_encoding的結果是"",iconv的結果是""
㈢ php怎麼轉碼,為什麼需要gbk和utf8之間互相轉換,轉化為帶來哪些坑
php轉碼,$text=iconv("UTF-8","GBK",$text);
把gb2312轉成utf-8
目前用過,似乎沒有什麼坑,只要找到相應的碼即可
㈣ php設置成utf-8還是亂碼了怎麼辦
有時後php代碼里邊設置了「header("Content-type:
text/html;
charset=utf-8");」不一定會管用,因為有時文件本身格式就是錯誤的,你先把代碼復制到一個txt文件里邊,然後用代碼工具對php文件進行轉碼成utf-8格式(這時你就會發現里邊的代碼亂碼了,由其是中文和特殊字元),再把txt里邊的代碼復制覆蓋原來的php文件內容,然後保存即可,例如用Notepad++
工具
可以對文件本身進行轉碼
㈤ PHP中如何給關聯數組的key和value轉碼
php轉碼一般用iconv()方法。
如:iconv("轉碼前的編碼","轉碼後的編碼",需要轉換編碼的字元串);
$result_array=array();//定一個接收結果的空數組。
$array=array("電腦"=>12,"內存"=>3,"顯示器"=>19);//定義數組即要轉換編碼的數組
foreach($sas$key=>$value){//使用foreach循環遍歷數組。
$key=iconv("GBK","UTF-8",$key);//對數組的鍵進行轉碼即要轉換編碼的文字。
$result_array[$key]=$value;//從新拼接一個新的數組(轉碼後)
}
var_mp($result_array)//列印轉碼後的數組進行確認。
㈥ PHP 轉換中文為編碼
給個轉碼的方法給你吧! 你可以自己修改$outEncoding的參數,下面的方法默認是轉換為gb2312的字元集了,你調用方法就可以將你的字元串轉換字元
//中文字元編碼轉換
public function safeEncoding($string,$outEncoding ='GB2312')
{
$encoding = "UTF-8";
for($i=0;$i<strlen($string);$i++)
{
if(ord($string{$i})<128)
continue;
if((ord($string{$i})&224)==224)
{
//第一個位元組判斷通過
$char = $string{++$i};
if((ord($char)&128)==128)
{
//第二個位元組判斷通過
$char = $string{++$i};
if((ord($char)&128)==128)
{
$encoding = "UTF-8";
break;
}
}
}
if((ord($string{$i})&192)==192)
{
//第一個位元組判斷通過
$char = $string{++$i};
if((ord($char)&128)==128)
{
// 第二個位元組判斷通過
$encoding = "GB2312";
break;
}
}
}
if(strtoupper($encoding) == strtoupper($outEncoding))
return $string;
else
return iconv($encoding,$outEncoding,$string);
}
㈦ PHP轉碼問題
你的 php 代碼應該用 UTF-8 保存;
你的 HTML 應設定頁面content類型, 指定charset 為 UTF-8
<metacontent="text/html;charset=utf-8"http-equiv="content-type"/>
瀏覽器如果不能自動識別, 應選擇 UTF-8 解碼;
㈧ 如何將phpinfo字元串類型轉換
php中iconv、mb_convert_encoding函數字元編碼轉換詳解如下:
iconv函數庫能夠完成各種字元集間的轉換,是php編程中不可缺少的基礎函數庫。
用法如下:
$string="親愛的朋友歡迎訪問博客,希望給您帶來一點點的幫助!";
iconv("utf8","gbk",$string)//將字元串string編碼由utf8轉變成gbk;
擴展如下:
echo[MathProcessingError]str=′好,歡迎訪問博客,該博客記錄一個程序員的成長過程!′;echo′<br/>′;echoiconv(′GB2312′,′UTF−8′,str);//將字元串的編碼從GB2312轉到UTF-8
echo'<br/>';
echoiconv_substr([MathProcessingError]str,1,1,′UTF−8′);//按字元個數截取而非位元組printr(iconvgetencoding());//得到當前頁面編碼信息echoiconvstrlen(str,'UTF-8');//得到設定編碼的字元串長度
//也有這樣用的
[MathProcessingError]content=iconv("UTF−8","gbk//TRANSLIT",content);
備註:
1、iconv不是php的默認函數,也是默認安裝的模塊。需要安裝才能用的。
如果是windows2000+php,你可以修改php.ini文件,將extension=php_iconv.dll前的";"去掉,同時你要你的原php安裝文件下的iconv.dll到你的winnt/system32下(如果你的dll指向的是這個目錄,我本地的沒有操作這一步)
在linux環境下,用靜態安裝的方式,在configure時加多一項 --with-iconv就可以了,phpinfo看得到iconv的項。(Linux7.3+Apache4.06+php4.3.2);
到此php中的iconv 介紹完畢
2、用iconv函數把抓取來過的utf-8編碼的頁面轉成gb2312, 發現只有用iconv函數把抓取過來的數據一轉碼數據就會無緣無故的少一些。原因是這樣的:
string iconv ( string in_charset, string out_charset, string str )
注意:第二個參數,除了可以指定要轉化到的編碼以外,還可以增加兩個後綴://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 會自動將不能直接轉化的字元變成一個或多個近似的字元,//IGNORE 會忽略掉不能轉化的字元,而默認效果是從第一個非法字元截斷。 被截斷了,當然就會少了;
可以這樣修改iconv("UTF-8","GB2312//IGNORE",$string) 會忽略掉不能轉化的字元;
附加:
PHP中的mb_convert_encoding與iconv函數介紹
mb_convert_encoding這個函數是用來轉換編碼的,和iconv函數差不多。
英文一般不會存在編碼問題,只有中文數據才會有這個問題。比如用Zend Studio或Editplus寫程序時,用的是gbk編碼,如果數據需要入資料庫,而資料庫的編碼為utf8時,這時就要把數據進行編碼轉換,不然進到資料庫就會變成亂碼。
做一個GBK To UTF-8
<?php
header("content-Type:text/html;charset=Utf-8");//設置字元的編碼是utp-8
echomb_convert_encoding("你系我的友仔","UTF-8","GBK");
?>再做GB2312 To Big5
<?php
header("content-Type:text/html;charset=big5");
echomb_convert_encoding("朋友","big5","GB2312");
?>
不過要使用上面的函數需要安裝但是需要先enable mbstring 擴展庫,道理還是一樣的,修改php.ini。
PHP中的另外一個函數iconv也是用來轉換字元串編碼的,與上函數功能相似。
下面還有一些詳細的例子:
iconv—
(PHP4>=4.0.5,PHP5)
mb_convert_encoding—Convertcharacterencoding
(PHP4>=4.0.6,PHP5)
用法:
stringmb_convert_encoding(stringstr,stringto_encoding[,mixedfrom_encoding]
需要先enable mbstring 擴展庫,在 php.ini里將; extension=php_mbstring.dll 前面的 ;
去掉mb_convert_encoding 可以指定多種輸入編碼,它會根據內容自動識別,但是執行效率比iconv差太多;
那為何還要講解 這個 mb_convert_encoding()函數呢?答案如下:
發現iconv在轉換字元」—」到gb2312時會出錯,如果沒有ignore參數,所有該字元後面的字元串都無法被保存。不管怎麼樣,這個」—」都無法轉換成功,無法輸出。
另外mb_convert_encoding沒有這個bug.
一般情況下用 iconv,只有當遇到無法確定原編碼是何種編碼,或者iconv轉化後無法正常顯示時才用mb_convert_encoding 函數.
㈨ PHP里怎麼轉碼
使用函數:iconv();
iconv ( string $in_charset , string $out_charset , string $str )
第一個參數:內容原的編碼
第二個參數:目標編碼
第三個參數:要轉的字元串