一、按不同編碼方式進行試轉換,比較轉換後與轉換前是否相同:
// 識別字串編碼
public static string getencoding(string str) ;
for (string encode : encodes) else catch (exception er) {
return "";
二、分析byte來判斷規律。
缺點:有時,個別本地編碼位元組在utf8中也會出現,導致出錯,需要分析。
public static boolean isvalidutf8(byte b,int amaxcount){
int llen=b.length,lcharcount=0;
for(int i=0;i < llen; i++){
byte lbyte=b[i++];//to fast operation, ++ now, ready for the following for(;;)
if(lbyte>=0) continue;//>=0 is normal ascii
if(lbyte<(byte)0xc0 || lbyte>(byte)0xfd) return false;
int lcount=lbyte>(byte)0xfc?5:lbyte>(byte)0xf8? 4 :lbyte>(byte)0xf0?3:lbyte>(byte)0xe0?2:1;
if(i+lcount>llen) return false;
for(int j=0;j=(byte)0xc0) return false;
return true;
相應地,乙個使用上述方法的例子如下:
public static string geturlparam(string astr,string adefaultcharset) throws unsupportedencodingexception{
if(astr==null) return null;
byte lbytes=astr.getbytes("iso-8859-1");
return new string(lbytes,stringutil.isvalidutf8(lbytes)?"utf8":adefaultcharset);
三:使用jchardet元件:
可以從得到更多關於這個演算法的資訊。
JAVA檢測字串是否數值
一,開篇 對於 檢測字串是否數值 網上搜尋結果確實不少,基本思路都是使用正規表示式,基本上都是直接上 基本上好像都靠譜 但是談思路的不多。二,什麼樣的字串才是數值 總的來說,字串的字元只能存在於 正號 負號 小數點 0 9的數字,且 正號和負號只能出現在頭部且最多只能出現1次 小數點最多只能出現1次...
檢測字串
instanceof 用來檢測某乙個例項是否屬於這個類 constructor 利用原型構造器的方式檢測資料型別 object.prototype.tostring.call 借用內建類object原型上的tostring方法實現資料型別檢測console.log typeof typeof typ...
875 python chardet檢測字元編碼
字串編碼一直是令人非常頭疼的問題,尤其是我們在處理一些不規範的第三方網頁的時候。雖然python提供了unicode表示的str和bytes兩種資料型別,並且可以通過encode 和decode 方法轉換,但是,在不知道編碼的情況下,對bytes做decode 不好做。對於未知編碼的bytes,要把...