日期:2014-05-17  浏览次数:20779 次

请问byte[]如何判断内容是纯英文还是中英混杂,求思路,谢谢
请问byte[]如何判断内容是纯英文还是中英混杂,求思路,谢谢

------解决方案--------------------
先new成字符串
然后用char遍历这个字符串
中文在某个范围,英文在某个范围
------解决方案--------------------
System.out.println("中国".length());
System.out.println("ab".length());
------解决方案--------------------
先new成字符串
然后用char遍历这个字符串
中文在某个范围,英文在某个范围
------解决方案--------------------
正则表达式?
------解决方案--------------------
UTF-16能显示中文,能显示英文,那就直接用UTF-16吧

刚大概测试了下,貌似英文的字节范围在大小写都包含在65-122
中文的大概都是负数,我只是猜测啊。

楼主最好自己试试,找个汉字范围把所有汉字的byte打印出来。
------解决方案--------------------
探讨

UTF-16能显示中文,能显示英文,那就直接用UTF-16吧

刚大概测试了下,貌似英文的字节范围在大小写都包含在65-122
中文的大概都是负数,我只是猜测啊。

楼主最好自己试试,找个汉字范围把所有汉字的byte打印出来。

------解决方案--------------------
Java code

 byte[] b1="中国".getBytes("GBK");//[-42, -48, -71, -6]
    byte[] b2="中国".getBytes("UTF-8");//[-28, -72, -83, -27, -101, -67]
    byte[] b3="中国".getBytes("UTF-16");//[-2, -1, 78, 45, 86, -3]
    
    byte[] b4="ab".getBytes("GBK");//[97, 98]
    byte[] b5="ab".getBytes("UTF-8");//[97, 98]
    byte[] b6="ab".getBytes("UTF-16");//[-2, -1, 0, 97, 0, 98]
    System.out.println(new String(b6,"GBK"));//  a b
    System.out.println(new String(b6,"UTF-16"));//ab

------解决方案--------------------
探讨

引用:

UTF-16能显示中文,能显示英文,那就直接用UTF-16吧

刚大概测试了下,貌似英文的字节范围在大小写都包含在65-122
中文的大概都是负数,我只是猜测啊。

楼主最好自己试试,找个汉字范围把所有汉字的byte打印出来。

还是用正则表达式来测试我觉得比较好,英文字母一共就那么几个,正则表达式也很好写。这个byte也可能不是给U……

------解决方案--------------------
Java code

public static boolean containsZH(byte[] arr,String charset)throws Exception{
        int byteLen = arr.length;
        String str = new String(arr,charset);
        int strLen = str.length();
        return (byteLen != strLen);
    }
    public static void main(String[] args) throws Exception{
        System.out.println(containsZH("中国".getBytes("GBK"),"GBK"));
        System.out.println(containsZH("aa".getBytes("GBK"),"GBK"));
        System.out.println(containsZH("中国".getBytes("UTF-8"),"UTF-8"));
        System.out.println(containsZH("aa".getBytes("UTF-8"),"UTF-8"));
        System.out.println(containsZH("aa中国".getBytes("UTF-8"),"UTF-8"));
    }

------解决方案--------------------
探讨

Java code

public static boolean containsZH(byte[] arr,String charset)throws Exception{
int byteLen = arr.length;
String str = new String(arr,charset);
int strLen = str.lengt……

------解决方案--------------------
探讨

Java code

byte[] b1="中国".getBytes("GBK");//[-42, -48, -71, -6]
byte[] b2="中国".getBytes("UTF-8");//[-28, -72, -83, -27, -101, -67]
byte[] b3="中国".getBytes("UTF-16");//[-2, -1, 78, 45, 86, -……