本文目錄一覽:
- 1、php 能實現漢字轉url編碼的方法嗎?
- 2、php json_encode使用中文不轉碼
- 3、PHP 輸出簡單的中文 亂碼問題
- 4、php搜索 繁體怎麼轉成簡體
- 5、php中中文如何轉碼
- 6、如何正確運用PHP json_encode函數進行中文轉換
php 能實現漢字轉url編碼的方法嗎?
rawurlencode()函數即可!
示例:
function raw( $String, $en = false) {
return !$en ? rawurldecode( $Strint ) : rawurlencode( $String );
}
echo raw(‘%E5%AE%A2%E6%88%B7’); //輸出: 客戶
echo raw(‘客戶’, true ); //輸出:%E5%AE%A2%E6%88%B7
php json_encode使用中文不轉碼
PHP轉JSON,中文會被轉碼成unicode,使用常量 JSON_UNESCAPED_UNICODE 可以使中文原樣輸入。
不使用 JSON_UNESCAPED_UNICODE
使用 JSON_UNESCAPED_UNICODE
Json在 5.4 還加入了: JSON_BIGINT_AS_STRING , JSON_PRETTY_PRINT , JSON_UNESCAPED_SLASHES 等選項, 如果有興趣, 大家可以參看: json_encode
其中有2個比較常用到的參數
JSON_UNESCAPED_UNICODE (中文不轉為unicode ,對應的數字 256)
JSON_UNESCAPED_SLASHES (不轉義反斜杠,對應的數字 64)
通常json_encode只能傳入一個常量,如果同時使用2個常量怎麼辦?
JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320
使用方法:json_encode($arr,320);即可完成同時使用2個常量。
PHP5.4才支持 JSON_UNESCAPED_UNICODE 這個參數,此參數是讓中文字元在json_encode的時候不用轉義,減少數據傳輸量。
PHP 輸出簡單的中文 亂碼問題
解決php中中文亂碼問題方法
php文件本身的編碼與網頁的編碼應匹配
a. 如果欲使用gb2312編碼,那麼php要輸出頭:header(「Content-Type: text/html; charset=gb2312″),靜態頁面添加meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″,所有文件的編碼格式為ANSI,可用記事本打開,另存為選擇編碼為ANSI,覆蓋源文件。
b. 如果欲使用utf-8編碼,那麼php要輸出頭:header(「Content-Type: text/html; charset=utf-8″),靜態頁面添加meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″,所有文件的編碼格式為utf-8。保存為utf-8可能會有點麻煩,一般utf-8文件開頭會有BOM,如果使用session就會出問題,可用editplus來保存,在editplus中,工具-參數選擇-文件-UTF-8簽名,選擇總是刪除,再保存就可以去掉BOM信息了。
php本身不是Unicode的,所有substr之類的函數得改成mb_substr(需要裝mbstring擴展);或者用iconv轉碼。
如果你的HTML文件文件出現了亂碼問題,那麼你可以在head標籤裡面加入UTF8編碼(國際化編碼):UTF-8是沒有國家的編碼,也就是獨立於任何一種語言,任何語言都可以使用的。
擴展資料:
解決PHP 輸出簡單的中文 亂碼問題的其他方法:
在php的echo前面加入header(“Content-Type:text/html;charset=gb2312”)
把meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ /中的UTF-8改成gb2312
參考資料:
百度百科-PHP
php搜索 繁體怎麼轉成簡體
PHP實現—漢字簡體繁體轉換
這是以class包裝好的簡繁體轉換的class,
另外需要兩個table檔:
1.
2.
程式如下: CCharset.php3
? //=====================================================
// 程式員: Magic Jerry
//
// function Big5_Gb($str) = big5轉GB for string
// function Gb_Big5($str) = GB轉Big5 for string
//=====================================================
class CCharset {
var $gb_map=”gb.map”; //如果要放到別的路徑,要加上完整路徑
var $big5_map=”big5.map”; //例如 =”/home/table/gb.map
var $dep_char = 127;
//—————————————————————–
function cbig5_gb($str,$fd) {
$c=ord(substr($str,0,1));
$x=ord(substr($str,1,1));
$address=(($c-160)*510)+($x-1)*2;
fseek($fd, $address);
$hi=fgetc($fd);
$lo=fgetc($fd);
return “$hi$lo”;
}
function cgb_big5($str,$fd) {
$c=ord(substr($str,0,1));
$x=ord(substr($str,1,1));
$address=(($c-160)*510)+($x-1)*2;
fseek($fd, $address);
$hi=fgetc($fd);
$lo=fgetc($fd);
return “$hi$lo”;
}
//—————————————————————–
function Big5_Gb($str) {
$fd = fopen ($this-gb_map, “r”);
$str=str_replace(“charset=big5″,”charset=gb2312”, $str);
$outstr=””;
for($i=0;$istrlen($str);$i++) {
$ch=ord(substr($str,$i,1));
if($ch $this-dep_char) {
$outstr.=$this-cbig5_gb(substr($str,$i,2),$fd);
$i++;
} else {
$outstr.=substr($str,$i,1);
}
}
fclose ($fd);
return $outstr;
}
//—————————————————————–
function Gb_Big5($str) {
$fd = fopen ($this-big5_map, “r”);
$str=str_replace(“charset=gb2312″,”charset=big5”, $str);
$outstr=””;
for($i=0;$istrlen($str);$i++) {
$ch=ord(substr($str,$i,1));
if($ch $this-dep_char) {
$outstr.=$this-cgb_big5(substr($str,$i,2),$fd);
$i++;
} else {
$outstr.=substr($str,$i,1);
}
}
fclose ($fd);
return $outstr;
}
}
?
===================================================================
使用範例:
?
// Designer: Magic Jerry
//====直接轉換文字串 的使用方法========
include(“CCharset.php3”);
$obj=new CCharset;
$big5=”這是一個big5的文字串”;
$tgb=$obj-Big5_Gb($big5);
echo $tgb; //=== $tgb為轉換好的gb碼字串
$tbig5=$obj-Gb_Big5($tgb);
echo $tbig5; // 又被轉回來了: big5
//======================================
?
?
//如果直接轉換網頁 或是檔案
// 語法 這個程式.php3?http://要轉碼的網頁url或檔案
// example: 轉換奇摩首頁
// 這個程式.php3?
// 注意: 以下寫法如遇到該網頁有使用cookie,例如認證user,可能會被踢回,login錯誤..
// 為什麼? 想想看吧… @_@
include(“CCharset.php3”);
$file=$QUERY_STRING;
$fcontents = join( ”, file( “$file” ) );
$fcontents=str_replace(“head”,”headbase href=$file”, $fcontents);
$code=new CCharset;
$gb=$code-Big5_Gb($fcontents);
echo $gb;
?
範例:
?
if($func==”charset”) {
setcookie(“CHAR_GB”,$GB,time()+ 31536000);
$t=time();
$url=”http://”.$HTTP_HOST.$PHP_SELF.”?”.$QUERY_STRING;
$url=str_replace(“?func=charsetGB=1″,””, $url);
$url=str_replace(“?func=charsetGB=0″,””, $url);
$url=str_replace(“func=charsetGB=1″,””, $url);
$url=str_replace(“func=charsetGB=0″,””, $url);
//echo $url;
//echo “SET to Charset = $CHAR_GB”;
$t=time();
echo “
script language=javascript
document.location=’$url’
/script
“;
exit;
}
//phpinfo();
if($CHAR_GB==1 !$istran ) {
include(“CCharset.php3”);
if(strlen($QUERY_STRING)) $url=”http://”.$HTTP_HOST.$PHP_SELF.”?”.$QUERY_STRING.”istran=1″;
else $url=”http://”.$HTTP_HOST.$PHP_SELF.”?istran=1″;
while (list ($key, $val) = each ($HTTP_COOKIE_VARS)) {
//echo “$key = $valbr”;
$url.=””.$key.”=”.urlencode($val);
}
$fcontents = join( ”, file( “$url” ) );
$code=new CCharset;
$fcontents=$code-Big5_Gb($fcontents);
//echo “轉換過的 $CHAR_GB”;
echo $fcontents;
exit;
}
/
php中中文如何轉碼
應該是沒有URL編碼(一般來說,用默認字符集是沒有問題的)。
URL編碼/解碼,可用函數urlencode()與urldecode()。
還有一個小問題,你有個地方打錯了,在表單中把playerName打成了playerNmae,而iframe的URL中卻是playerName。
iframe代碼改為(你的拼寫錯誤已修正):
iframe id=”aaa” name=”aaa” width=”600″ height=”500″ src=”網址/playerDetail.php?serverName=?php echo urlencode($_GET[“serverName”]); ?playerName=?php echo urlencode($_GET[“playerName”]); ?”/iframe
表單代碼改為:
form action=”22.php” method=”get”
伺服器: input type=”text” name=”serverName” /br /
玩家名: input type=”text” name=”playerName” /br /
input type=”submit” /
/form
再試試?
如何正確運用PHP json_encode函數進行中文轉換
在 php 中使用 json_encode() 內置函數(php 5.2)可以使用得 php 中數據可以與其它語言很好的傳遞並且使用它。這個函數的功能是將數值轉換成json數據存儲格式,但是轉換後的中文會變成Unicode編碼。
[php] view plaincopyprint?
?php
$arr = array
(
‘Name’=’希亞’,
‘Age’=20
);
$jsonencode = json_encode($arr);
echo $jsonencode;
?
程序運行結果如下:
[php] view plaincopyprint?
{“Name”:null,”Age”:20}
json_encode 函數中中文被編碼成 null 了,Google 了一下,很簡單,為了與前端緊密結合,Json 只支持 utf-8 編碼,我認為是前端的 Javascript 也是 utf-8 的原因。
[php] view plaincopyprint?
?php
$array = array
(
‘title’=iconv(‘gb2312′,’utf-8′,’這裡是中文標題’),
‘body’=’abcd…’
);
echo json_encode($array);
?
這個程序的運行結果為:
[php] view plaincopyprint?
{“title”:”\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898″,”body”:”abcd…”}
數組中所有中文在json_encode之後都不見了或者出現\u2353等。解決方法是用urlencode()函數處理以下,在json_encode之前,把所有數組內所有內容都用urlencode()處理一下,然用json_encode()轉換成json字元串,最後再用urldecode()將編碼過的中文轉回來。
[php] view plaincopyprint?
?php
/**************************************************************
*
* 使用特定function對數組中所有元素做處理
* @param string $array 要處理的字元串
* @param string $function 要執行的函數
* @return boolean $apply_to_keys_also 是否也應用到key上
* @access public
*
*************************************************************/
function arrayRecursive($array, $function, $apply_to_keys_also = false)
{
static $recursive_counter = 0;
if (++$recursive_counter 1000) {
die(‘possible deep recursion attack’);
}
foreach ($array as $key = $value) {
if (is_array($value)) {
arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}
if ($apply_to_keys_also is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter–;
}
/**************************************************************
*
* 將數組轉換為JSON字元串(兼容中文)
* @param array $array 要轉換的數組
* @return string 轉換得到的json字元串
* @access public
*
*************************************************************/
function JSON($array) {
arrayRecursive($array, ‘urlencode’, true);
$json = json_encode($array);
return urldecode($json);
}
$array = array
(
‘Name’=’希亞’,
‘Age’=20
);
echo JSON($array);
?
這次成功了,運行結果如下:
[php] view plaincopyprint?
{“Name”:”希亞”,”Age”:”20″}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/242532.html