PHP 編碼轉化 GBK utf 8

2021-10-19 13:59:13 字數 3485 閱讀 4591

iconv — 字串按要求的字元編碼來轉換

iconv有bug ,碰到一些生僻字就會無法轉換,當然了配置第二個引數時,可以稍微彌補一下預設缺陷,不至於無法轉換是截斷,用法如下

iconv(「utf-8″,」gb2312//ignore」,$data) ;

這樣碰到生僻字轉換失敗時,它就會忽略失敗,繼續轉換下面的內容。

iconv

string iconv ( string $in_charset

, string $out_charset

, string $str

)第乙個引數:內容原的編碼

第二個引數:目標編碼

第三個引數:要轉的字串

函式返回字串

<?php

$instr

= 『測試』;

// gbk轉utf-8

$outstr

=iconv

(『gbk』,'utf

-8′,

$instr);

?>

返回值

返回轉換後的字串, 或者在失敗時返回 false。

為了確保轉換的成功率,我們可以用另乙個轉換函式

mb_convert_encoding,這個函式效率不是很高,另外這個函式還可以省略第三個引數,自動識別內容編碼,不過最好不要用,影響效率,還需要注意的時,mb_convert_encoding和iconv引數順序不一樣,一定要注意。

附兩個函式簡單的用法:

mb_convert_encoding

string mb_convert_encoding ( string $str

, string $to_encoding

[, mixed $from_encoding])

第乙個引數:要處理的字串

第二個引數:目標編碼

第三個引數:內容原編碼,它可以是乙個 array 也可以是逗號分隔的列舉列表

<?php

$instr

='測試'

;// gbk轉utf-8

$outstr

=mb_convert_encoding

($instr

,'utf-8'

,'gbk',)

;$str

=mb_convert_encoding

($instr

,"ucs-2le"

,"jis, eucjp-win, sjis-win");

?>

mb_convert_variables — 轉換乙個或多個變數的字元編碼

mb_convert_variables (

$to_encoding

,$from_encoding,&

$vars

[, mixed &$...

])

將變數 vars 的編碼從 from_encoding 轉換成編碼 to_encoding。

to_encoding  將 string 轉換成這個編碼。

from_encoding 可以指定為乙個 array 或者逗號分隔的 string,它將嘗試根據 from-coding 來檢測編碼。 當省略了 from_encoding,將使用 detect_order。

vars 是要轉換的變數的引用。 引數可以接受 string、array 和 object 的型別。 mb_convert_variables

() 假設所有的引數都具有同樣的編碼。

額外的 vars。

返回值 :

成功時返回轉換前的字元編碼,失敗時返回 false。

例項:<?php

/* 轉換變數 $post1、$post2 編碼為內部(internal)編碼 */

$interenc

=mb_internal_encoding()

;$inputenc

=mb_convert_variables

($interenc

,"ascii,utf-8,sjis-win"

,$post1

,$post2);

?>

mb_internal_encoding — 設定/獲取內部字元編碼

mixed mb_internal_encoding (

[ string $encoding

=mb_internal_encoding()

])引數 :

encoding 字元編碼名稱使用於 http 輸入字元編碼轉換、http 輸出字元編碼轉換、mbstring 模組系列函式字元編碼轉換的預設編碼。

返回值 :

如果設定了 encoding,則成功時返回 true, 或者在失敗時返回 false。 in this case

, the character encoding for multibyte regex is not changed. 如果省略了 encoding,則返回當前的字元編碼名稱。

<?php

/* 設定內部字元編碼為 utf-8 */

mb_internal_encoding

("utf-8");

/* 顯示當前的內部字元編碼*/

echo

mb_internal_encoding()

;?>

mb_detect_encoding — 檢測字元的編碼

string mb_detect_encoding ( string $str

[, mixed $encoding_list

=mb_detect_order()

[, bool $strict

=false]]

)

引數 

str 待檢查的字串。

encoding_list 是乙個字元編碼列表。 編碼順序可以由陣列或者逗號分隔的列表字串指定。

如果省略了 encoding_list 將會使用 detect_order。

strict strict 指定了是否嚴格地檢測編碼。 預設是 false。

返回值檢測到的字元編碼,或者無法檢測指定字串的編碼時返回 false。

字串編碼未知的情況下對字串進行編碼:

1、無論字串編碼是什麼,均轉換為gbk

function

getsafestr

($str

)else

}

畫重點

function

getsafestr

($str

)else

}

獲取字串編碼方法 :

function

getcode

($str

)else

}

字串編碼轉換 GBK utf8

pagedata 如果網頁編碼是utf 8的,可以這麼轉換為字串 pagesource alloc initwithdata pagedata encoding nsutf8stringencoding 如果網頁是gbk 或者gb2312 用utf8轉換的話,pagesource返回nil。這時需要...

Python字元編碼轉碼之GBK,UTF8互轉

1 須知 在pythonwww.cppcns.com 2中預設編碼是 ascii,而在python 3中預設編碼是 unicode unicode 分為utf 32 佔4個位元組 utf 16 佔兩個位元組 utf 8 佔1 4個位元組 所以utf 16 是最常用的unicode版本,但是在檔案裡存...

字元格式(gbk utf8等)

gbk就是在儲存你的帖子的時候,乙個漢字占用兩個位元組。外國人看會出現亂碼,此為我中華為自己漢字編碼而形成之解決方案。utf8就是在儲存你的帖子的時候,乙個漢字占用3個位元組。但是外國人看的話不會亂碼,此為西人為了解決多位元組字元而形成之解決方案。ascii iso 8859 1 是鼻祖,最簡單的方...