php中編碼轉換問題,php 轉碼

本文目錄一覽:

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:

淺析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 解決utf-8和gb2312編碼轉換問題

終於皇天不負有心人,答案還是讓我找到了。

網上的都是這樣用的

複製代碼

代碼如下:

$content

=

iconv(“utf-8″,”gb2312”,$content);

這樣做其實也對著了,看著確實是把utf-8轉化為gb2312了,但是實際運行的話,往往都是以失敗告終的,原因呢?

原因實際上也很簡單,因為任何的函數都是執行錯誤的時候,同時很不幸的是iconv();就很終於出現錯誤。現在給你正確的答案。

真正的答案是這樣的

複製代碼

代碼如下:

$content

=

iconv(“utf-8″,”gb2312//IGNORE”,$content);

很簡單的,只要後面加上一個//IGNORE就行,加上這個就可以是ICONV()函數忽略錯誤,繼續執行。

同理,要像把gb2312換為utf-8隻要寫上$content

=

iconv(“gb2312″,”utf-8//IGNORE”,$content);就行

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

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

相關推薦

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

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

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

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

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

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

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

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

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

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

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

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

    編程 2025-04-29
  • NodeJS 建立TCP連接出現粘包問題

    在TCP/IP協議中,由於TCP是面向位元組流的協議,發送方把需要傳輸的數據流按照MSS(Maximum Segment Size,最大報文段長度)來分割成若干個TCP分節,在接收端…

    編程 2025-04-29
  • 如何解決vuejs應用在nginx非根目錄下部署時訪問404的問題

    當我們使用Vue.js開發應用時,我們會發現將應用部署在nginx的非根目錄下時,訪問該應用時會出現404錯誤。這是因為Vue在刷新頁面或者直接訪問非根目錄的路由時,會認為伺服器上…

    編程 2025-04-29
  • 如何解決egalaxtouch設備未找到的問題

    egalaxtouch設備未找到問題通常出現在Windows或Linux操作系統上。如果你遇到了這個問題,不要慌張,下面我們從多個方面進行詳細闡述解決方案。 一、檢查硬體連接 首先…

    編程 2025-04-29
  • Python折扣問題解決方案

    Python的折扣問題是在計算購物車價值時常見的問題。在計算時,需要將原價和折扣價相加以得出最終的價值。本文將從多個方面介紹Python的折扣問題,並提供相應的解決方案。 一、Py…

    編程 2025-04-28

發表回復

登錄後才能評論