字符串按要求的字符編碼來(lái)轉(zhuǎn)換有bug怎么辦

2023-11-02    分類: 網(wǎng)站建設(shè)

詳細(xì)說(shuō)明:

——根據(jù)需要的字符編碼轉(zhuǎn)換字符串

有一個(gè)bug,一些生僻字不會(huì)被轉(zhuǎn)換。當(dāng)然,在配置第二個(gè)參數(shù)的時(shí)候,可以稍微彌補(bǔ)一下默認(rèn)的缺陷,這樣轉(zhuǎn)換就不會(huì)被截?cái)嗔?。用法如?/p>

("UTF-8","http://",$data);

這樣,當(dāng)遇到生詞轉(zhuǎn)換失敗時(shí),會(huì)忽略失敗,繼續(xù)轉(zhuǎn)換后面的內(nèi)容。

iconv
string iconv ( string $in_charset , string $out_charset , string $str )
第一個(gè)參數(shù):內(nèi)容原的編碼
第二個(gè)參數(shù):目標(biāo)編碼
第三個(gè)參數(shù):要轉(zhuǎn)的字符串
函數(shù)返回字符串

返回值

返回轉(zhuǎn)換后的字符串,失敗時(shí)返回。

詳細(xì)說(shuō)明:

為了保證轉(zhuǎn)換的成功率,我們可以使用另一個(gè)轉(zhuǎn)換函數(shù)

,這個(gè)函數(shù)效率不高。另外這個(gè)功能也可以省略第三個(gè)參數(shù)來(lái)自動(dòng)識(shí)別內(nèi)容碼,但是最好不要使用,影響效率。如果需要注意的話編碼轉(zhuǎn)換 php,和參數(shù)的順序是不一樣的。注意。

附上兩個(gè)函數(shù)編碼轉(zhuǎn)換 php,簡(jiǎn)單使用:

mb_convert_encoding
string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
第一個(gè)參數(shù):要處理的字符串
第二個(gè)參數(shù):目標(biāo)編碼
第三個(gè)參數(shù):內(nèi)容原編碼,它可以是一個(gè) array 也可以是逗號(hào)分隔的枚舉列表

個(gè)人建議在遇到轉(zhuǎn)碼問(wèn)題時(shí)多保險(xiǎn)一些。

——轉(zhuǎn)換一個(gè)或多個(gè)變量的字符編碼

mb_convert_variables ( $to_encoding , $from_encoding , &$vars [, mixed &$... ] )

將變量 vars 的代碼從代碼轉(zhuǎn)換為代碼。

mb_convert_variables() 會(huì)拼接變量數(shù)組或?qū)ο笾械淖址畞?lái)檢測(cè)編碼,因?yàn)槎套址臋z測(cè)往往會(huì)失敗。因此,不能在一個(gè)數(shù)組或?qū)ο笾谢旌鲜褂镁幋a。

to_encoding  將 string 轉(zhuǎn)換成這個(gè)編碼。
from_encoding 可以指定為一個(gè) array 或者逗號(hào)分隔的 string,它將嘗試根據(jù) from-coding 來(lái)檢測(cè)編碼。 當(dāng)省略了 from_encoding,將使用 detect_order。
vars 是要轉(zhuǎn)換的變量的引用。 參數(shù)可以接受 String、Array 和 Object 的類型。 mb_convert_variables() 假設(shè)所有的參數(shù)都具有同樣的編碼。
額外的 vars。

返回值 :
成功時(shí)返回轉(zhuǎn)換前的字符編碼,失敗時(shí)返回 FALSE。

實(shí)例:

——設(shè)置/獲取內(nèi)部字符編碼

mixed mb_internal_encoding ([ string $encoding = mb_internal_encoding() ] )

參數(shù) :
encoding 字符編碼名稱使用于 HTTp 輸入字符編碼轉(zhuǎn)換、HTTp 輸出字符編碼轉(zhuǎn)換、mbstring 模塊系列函數(shù)字符編碼轉(zhuǎn)換的默認(rèn)編碼。 
返回值 :
如果設(shè)置了 encoding,則成功時(shí)返回 TRUE, 或者在失敗時(shí)返回 FALSE。 In this case, the character encoding for multibyte regex is NOT changed. 如果省略了 encoding,則返回當(dāng)前的字符編碼名稱。

詳細(xì)說(shuō)明:

——檢測(cè)字符的編碼

string mb_detect_encoding ( string $str [, mixed $encoding_list = mb_detect_order() [, bool $strict = false ]] )

檢查字符串str的編碼。

參數(shù) 
str    待檢查的字符串。
encoding_list   是一個(gè)字符編碼列表。 編碼順序可以由數(shù)組或者逗號(hào)分隔的列表字符串指定。
如果省略了 encoding_list 將會(huì)使用 detect_order。
strict    strict 指定了是否嚴(yán)格地檢測(cè)編碼。 默認(rèn)是 FALSE。
返回值
檢測(cè)到的字符編碼,或者無(wú)法檢測(cè)指定字符串的編碼時(shí)返回 FALSE。

當(dāng)字符串編碼未知時(shí)對(duì)字符串進(jìn)行編碼:

1、不管是什么字符串編碼,都會(huì)轉(zhuǎn)成gbk

function getSafeStr($str){
    $s1 = iconv('utf-8','gbk//IGNORE',$str);
    $s0 = iconv('gbk','utf-8//IGNORE',$s1);
    if($s0 == $str){
        return $s1;
    }else{
        return $str;
    }
}

2、不管是什么字符串編碼,都會(huì)轉(zhuǎn)為utf-8

function getSafeStr($str){
    $s1 = iconv('gbk','utf-8//IGNORE',$str);
    $s0 = iconv('utf-8','gbk//IGNORE',$s1);
    if($s0 == $str){
        return $s1;
    }else{
        return $str;
    }
}

獲取字符串編碼方式:

function getcode($str)
{
    $s1 = iconv('utf-8','gbk//IGNORE',$str);
    $s0 = iconv('gbk','utf-8//IGNORE',$s1);
    if($s0 == $str){
        return 'utf-8';
    }else{
        return 'gbk';
    }
}

文章名稱:字符串按要求的字符編碼來(lái)轉(zhuǎn)換有bug怎么辦
文章出自:http://www.bm7419.com/news14/292114.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站關(guān)鍵詞優(yōu)化、定制網(wǎng)站、網(wǎng)站改版、小程序開發(fā)網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)