在Java中如何判断字符串的编码格式

,最近,我一直试图寻找一种判断Java程序中字符串编码格式的方法,同时,也查找了很多资料,设计了一个的程序,美中不足的是该方法对仅含有数字和英文字母的字符串无效。

原理:ASCII,GBK,UTF-8对数字和英文字母的编码相同,对其它字符编码不相同l,例如汉字等,UTF-16的编码跟前面三项都不同。

感兴趣的可以查看 Java中String字符串默认编码Java几种常见的编码格式

 

源代码:

 

import java.nio.charset.Charset;

public class Encoding
{
    public static String getEncoding(String str) 
    {    
        String encode;
		
	encode = "UTF-16";   		
        try 
	{    
            if(str.equals(new String(str.getBytes(), encode))) 
	    {   
                return encode;    
            }    
        } 
	catch(Exception ex) {} 
		
	encode = "ASCII";    
        try 
	{    
            if(str.equals(new String(str.getBytes(), encode)))
	    {    
                return "字符串<< " + str + " >>中仅由数字和英文字母组成,无法识别其编码格式";    
            }    
        } 
	catch(Exception ex) {}    
		
	encode = "ISO-8859-1";    
        try 
	{    
            if(str.equals(new String(str.getBytes(), encode))) 
	    {    
                return encode;    
            }    
        } 
	catch(Exception ex) {}    
		
	encode = "GB2312";    
        try 
	{    
            if(str.equals(new String(str.getBytes(), encode))) 
	    {    
                return encode;    
            }    
        } 
	catch(Exception ex) {} 
		
	encode = "UTF-8";    
        try 
	{    
            if(str.equals(new String(str.getBytes(), encode))) 
	    {    
                return encode;    
            }    
        } 
	catch(Exception ex) {}    
        
        /*
	 *......待完善
	 */
		
        return "未识别编码格式";    
    }  

    public static void main(String[] args)
    {
	//获取系统默认编码
	System.out.println("系统默认编码:" + System.getProperty("file.encoding")); //查询结果GBK
	//系统默认字符编码
	System.out.println("系统默认字符编码:" + Charset.defaultCharset()); //查询结果GBK
	//操作系统用户使用的语言
	System.out.println("系统默认语言:" + System.getProperty("user.language")); //查询结果zh
		
	System.out.println();
		
	String s1 = "hi, nice to meet you!";
	String s2 = "hi, 我来了!";
		
	System.out.println(getEncoding(s1));
	System.out.println(getEncoding(s2));
	}
}

测试结果,图1:

图1

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值