標籤:net ignore 檢測 als height 保險 article turn 忽略
轉http://blog.csdn.net/u013372487/article/details/52528535
iconv詳解:
iconv — 字串按要求的字元編碼來轉換
iconv有bug ,碰到一些生僻字就會無法轉換,當然了配置第二個參數時,可以稍微彌補一下預設缺陷,不至於無法轉換是截斷,用法如下
iconv(“UTF-8″,”GB2312//IGNORE”,$data) ;
這樣碰到生僻字轉換失敗時,它就會忽略失敗,繼續轉換下面的內容。
iconvstring 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,這個函數效率不是很高,另外這個函數還可以省略第三個參數,自動識別內容編碼,不過最好不要用,影響效率,還需要注意的時,mb_convert_encoding和iconv參數順序不一樣,一定要注意。
附兩個函數簡單的用法:
mb_convert_encodingstring 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_encoding比較保險。
mb_convert_variables
mb_convert_variables — 轉換一個或多個變數的字元編碼
mb_convert_variables ( $to_encoding , $from_encoding , &$vars [, mixed &$... ] )
將變數 vars 的編碼從 from_encoding 轉換成編碼 to_encoding。
mb_convert_variables() 會拼接變數數組或對象中的字串來檢測編碼,因為短字串的檢測往往會失敗。因此,不能在一個數組或對象中混合使用編碼。
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
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詳解:
mb_detect_encoding — 檢測字元的編碼
string mb_detect_encoding ( string $str [, mixed $encoding_list = mb_detect_order() [, bool $strict = false ]] )
檢測字串 str 的編碼。
參數 str 待檢查的字串。encoding_list 是一個字元編碼列表。 編碼順序可以由數組或者逗號分隔的列表字串指定。如果省略了 encoding_list 將會使用 detect_order。strict strict 指定了是否嚴格地檢測編碼。 預設是 FALSE。傳回值檢測到的字元編碼,或者無法檢測指定字串的編碼時返回 FALSE。
字串編碼未知的情況下對字串進行編碼:
1、無論字串編碼是什麼,均轉換為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、無論字串編碼是什麼,均轉換為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‘; }}
php 編碼轉換 亂碼解決