JAVA中檢測字元編碼

2021-09-01 07:10:25 字數 1158 閱讀 8833

一、按不同編碼方式進行試轉換,比較轉換後與轉換前是否相同:

// 識別字串編碼

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,要把...