php字元編碼轉換問題(能否修改php的字元編碼)

本文目錄一覽:

淺析PHP中的字元串編碼轉換(自動識別原編碼)

本篇文章是對PHP中字元串編碼轉換的實現代碼進行了詳細的分析介紹,需要的朋友參考下

複製代碼

代碼如下:

/**

*

對數據進行編碼轉換

*

@param

array/string

$data

數組

*

@param

string

$output

轉換後的編碼

*/

function

array_iconv($data,$output

=

‘utf-8’)

{

$encode_arr

=

array(‘UTF-8′,’ASCII’,’GBK’,’GB2312′,’BIG5′,’JIS’,’eucjp-win’,’sjis-win’,’EUC-JP’);

$encoded

=

mb_detect_encoding($data,

$encode_arr);//自動判斷編碼

if

(!is_array($data))

{

return

mb_convert_encoding($data,

$output,

$encoded);

}

else

{

foreach

($data

as

$key=$val)

{

if(is_array($val))

{

$data[$key]

=

array_iconv($val,

$input,

$output);

}

else

{

$data[$key]

=

mb_convert_encoding($data,

$output,

$encoded);

}

}

return

$data;

}

}

php 編碼轉換

URLEncode:是指針對網頁url中的中文字元的一種編碼轉化方式,最常見的就是Baidu、Google等搜索引擎中輸入中文查詢時候,生成經過Encode過的網頁URL。

URLEncode的方式一般有兩種,一種是傳統的基於GB2312的Encode(Baidu、Yisou等使用),另一種是基於UTF-8的Encode(Google、Yahoo等使用)。

本工具分別實現兩種方式的Encode與Decode:

中文

GB2312的Encode

%D6%D0%CE%C4

中文

UTF-8的Encode

%E4%B8%AD%E6%96%87

我們可以用以下代碼實現轉換:

?php

echo

urlencode(‘測試’);?

如果是gb2312編碼,轉換的結果為”%B2%E2%CA%D4″;

如果是utf-8編碼,轉換的結果為”%E6%B5%8B%E8%AF%95″;

希望我的回答你能滿意啊!呵呵!

PHP字元編碼轉換

?php

header(“Content-Type:text/html;charset=utf-8”);

function hex2ch($str)

{

if(empty($str))

{

return ”;

}

$new_str=”;

for($i=0;$istrlen($str);$i++)

{

$new_str.=($i%2==0)?’%’.$str[$i]:$str[$i];

}

//echo($new_str);

unset($str);

return rawurldecode($new_str);

}

function ch2hex($str)

{

if(empty($str))

{

return ”;

}

$str=rawurlencode($str);

return str_replace(‘%’,”,$str);

}

$str=’中國’;

$hex=ch2hex($str);

echo $hex;

$s=hex2ch($hex);

echo $s;

?

php中編碼轉換問題

function uc2html($str) {

$ret = ‘ ‘;

for( $i=0; $i strlen($str)/2; $i++ ) {

$charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);

$ret .= iconv( “utf-8 “, “gb2312 “,u2utf8($charcode));

}

return $ret;

}

function u2utf8($c) {

$str= ” “;

if ($c 0x80) {

$str.=$c;

} else if ($c 0x800) {

$str.=chr(0xC0 | $c 6);

$str.=chr(0x80 | $c 0x3F);

} else if ($c 0x10000) {

$str.=chr(0xE0 | $c 12);

$str.=chr(0x80 | $c 6 0x3F);

$str.=chr(0x80 | $c 0x3F);

} else if ($c 0x200000) {

$str.=chr(0xF0 | $c 18);

$str.=chr(0x80 | $c 12 0x3F);

$str.=chr(0x80 | $c 6 0x3F);

$str.=chr(0x80 | $c 0x3F);

}

return $str;

}

如果你不是smarty的話 試試這個 如果是smarty的話 用下面的方法

?php

/*

@Author: 蝸牛

@Blog:

@Note: 這個解決辦法是基於上面那個地址提到的方法,解決了中英文截取長度時出現亂碼的問題

*/

function smarty_modifier_truncate($string, $sublen = 80, $etc = ‘…’, $break_words = false, $middle = false)

{

$start=0;

$code=”UTF-8″;

if($code == ‘UTF-8’)

{

//如果有中文則減去中文的個數

$cncount=cncount($string);

if($cncount($sublen/2))

{

$sublen=ceil($sublen/2);

}

else

{

$sublen=$sublen-$cncount;

}

$pa = “/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/”;

preg_match_all($pa, $string, $t_string);

if(count($t_string[0]) – $start $sublen) return join(”, array_slice($t_string[0], $start, $sublen)).”…”;

return join(”, array_slice($t_string[0], $start, $sublen));

}

else

{

$start = $start*2;

$sublen = $sublen*2;

$strlen = strlen($string);

$tmpstr = ”;

for($i=0; $i$strlen; $i++)

{

if($i=$start $i($start+$sublen))

{

if(ord(substr($string, $i, 1))129)

{

$tmpstr.= substr($string, $i, 2);

}

else

{

$tmpstr.= substr($string, $i, 1);

}

}

if(ord(substr($string, $i, 1))129) $i++;

}

if(strlen($tmpstr)$strlen ) $tmpstr.= “…”;

return $tmpstr;

}

}

function cncount($str)

{

$len=strlen($str);

$cncount=0;

for($i=0;$i$len;$i++)

{

$temp_str=substr($str,$i,1);

if(ord($temp_str) 127)

{

$cncount++;

}

}

return ceil($cncount/3);

}

?

是可以的以上兩種方法 site:

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/271772.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-16 19:23
下一篇 2024-12-16 19:23

相關推薦

  • 英語年齡用連字元號(Hyphenation for English Age)

    英語年齡通常使用連字元號表示,比如 “five-year-old boy”。本文將從多個方面探討英語年齡的連字元使用問題。 一、英語年齡的表達方式 英語中表…

    編程 2025-04-29
  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智慧等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示「文件中含有宏,保存將導致宏不可用」的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Python字元轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智慧等領域廣泛應用。在很多場景下需要將字元串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字元轉列…

    編程 2025-04-29
  • Python學習筆記:去除字元串最後一個字元的方法

    本文將從多個方面詳細闡述如何通過Python去除字元串最後一個字元,包括使用切片、pop()、刪除、替換等方法來實現。 一、字元串切片 在Python中,可以通過字元串切片的方式來…

    編程 2025-04-29
  • Java Thread.start() 執行幾次的相關問題

    Java多線程編程作為Java開發中的重要內容,自然會有很多相關問題。在本篇文章中,我們將以Java Thread.start() 執行幾次為中心,為您介紹這方面的問題及其解決方案…

    編程 2025-04-29
  • Python計算中文字元個數

    本文將從多個方面對Python計算中文字元個數進行詳細的闡述,包括字元串長度計算、正則表達式統計和模塊使用方法等內容。 一、字元串長度計算 在Python中,計算字元串長度是非常容…

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網路爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29

發表回復

登錄後才能評論