导航:首页 > 编程语言 > java字符串编码判断

java字符串编码判断

发布时间:2022-03-03 15:58:05

java可供判断某字符串是什么编码的一行代码

明确告诉你,没有办法,你必须先知道编码,才能把byte数组转成字符,如果已经是java的String对象的话,则一定是Unicode的,这个没有为什么,Java就是这么定的。

② 怎么 知道 java字符串 编码格式

这样的测试方法是不正确的。getBytes(charset)是解码,new String(byte[], charset)是编码。new String(str.getBytes(charset),charset)是解码再编码,无论charset是什么编码格式,返回的字符串内容原始str是一致,因此equals方法都是返回true,达不到测试字符串编码格式的目的。个人观点:正确的测试姿势应该是这样的:

Stringcharset="xxx";//假定编码格式
Stringstr="中文";
booleanflag=str.equals(newString(str.getBytes(),charset));

flag为true则表明str的编码格式是假定的编码格式。其中说明str.getBytes()该方法就是按其自身编码格式去解码。其自身编码格式跟你的操作系统编码格式或你使用的IDE设置的文件的Text file encoding有关。

③ java中怎么判断一个字符串的编码

明确告诉你,没有办法,你必须先知道编码,才能把byte数组转成字符,如果已经是java的String那么只有unicode编码一种。

④ 技术问题:java中如何判断字符串内容是否是一种编码格式

可以看下java.nio.charset.Charset这个类,这个类里面有个静态方法:
public static boolean isSupported(String charsetName)通知是否支持指定的 charset。

参数:
charsetName - 请求的 charset 名称;可能是规范名称或别名
返回:
当且仅当当前 Java 虚拟机支持指定的 charset 时才返回 true
抛出:
IllegalCharsetNameException - 如果给定的 charset 名称是非法的
IllegalArgumentException - 如果给定的 charsetName 为 null

拿这个静态方法判断并捕捉异常,如果是true那就是正确的,否则就是false

⑤ Java: 如何知道一个字符串当前是什么字符集

判断java字符串的字符集有多种方法,我们一一讨论如下:
1、通过把未知编码字符串,用猜想的编码再解码,观察字符串是不是正确还原了。
原理:假如目标编码没有数组中的字符,那么编码会破坏,无法还原。
缺点:假如字符少,而正巧错误的猜想编码中有这种字节,就会出错。
如:new String("tested str".getBytes("enc"),"enc")
2、大多数时候,我们只要判断本地平台编码和utf8,utf8编码相当有规律,所以可以分析是否是utf8,否则使用本地编码。
原理:分析byte[]来判断规律。
缺点:有时,个别本地编码字节在utf8中也会出现,导致出错,需要分析。
如:判断是否utf-8代码:
public static boolean isValidUtf8(byte[] b,int aMaxCount){
int lLen=b.length,lCharCount=0;
for(int i=0;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;

⑥ java 怎么判断文本内容的编码格式

UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, 字节序标志),即0xEF, 0xBB, 0xBF,有的没有。Windows下的txt文本编辑器在保存UTF-8格式的文本文档时会自动添加BOM到文件头。在判断这类文档时,可以根据文档的前3个字节来进行判断。然而BOM不是必需的,而且也不是推荐的。对不希望UTF-8文档带有BOM的程序会带来兼容性问题,例如Java编译器在编译带有BOM的UTF-8源文件时就会出错。而且BOM去掉了UTF-8一个期望的特性,即是在文本全部是ASCII字符时UTF-8是和ASCII一致的,即UTF-8向下兼容ASCII。
在具体判断时,如果文档不带有BOM,就无法根据BOM做出判断,而且IsTextUnicode API也无法对UTF-8编码的Unicode字符串做出判断。那在编程判断时就要根据UTF-8字符编码的规律进行判断了。
UTF-8是一种多字节编码的字符集,表示一个Unicode字符时,它可以是1个至多个字节,在表示上有规律:
1字节:0xxxxxxx
2字节:110xxxxx 10xxxxxx
3字节:1110xxxx 10xxxxxx 10xxxxxx
4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
这样就可以根据上面的特征对字符串进行遍历来判断一个字符串是不是UTF-8编码了。
举例代码:
java.io.File f=new java.io.File("待判定的文本文件名");
try{
java.io.InputStream ios=new java.io.FileInputStream(f);
byte[] b=new byte[3];
ios.read(b);
ios.close();
if(b[0]==-17&&b[1]==-69&&b[2]==-65)
System.out.println(f.getName()+"编码为UTF-8");
else System.out.println(f.getName()+"可能是GBK");
}catch(Exception e){
e.printStackTrace();
}

⑦ java:如何判断字符串是不是乱码

我觉得楼主说的是在WIN下常见的乱码,但这在JAVA中是没有的,因为JAVA用的是UNICODE集.可以参考这里:http://..com/question/31882416.html?si=3
所以设计的是哪种语言,输出的也是哪种语言.就像现在可以直接查看日文网页而不会是乱码一样.
而二楼说的正则表达式就是汉字在UNICODE集中的位置.

⑧ 怎么使用java判断一个字符串是属于什么编码

楼上全是傻X, 这样没有的,使用开源组件吧detector.jar

用法很简单

/*------------------------------------------------------------------------
detector是探测器,它把探测任务交给具体的探测实现类的实例完成。
cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法
加进来,如ParsingDetector、 JChardetFacade、ASCIIDetector、UnicodeDetector。
detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的
字符集编码。
--------------------------------------------------------------------------*/
CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
/*-------------------------------------------------------------------------
ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于
指示是否显示探测过程的详细信息,为false不显示。
---------------------------------------------------------------------------*/
detector.add(new ParsingDetector(false));
/*--------------------------------------------------------------------------
JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码
测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以
再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。
---------------------------------------------------------------------------*/
detector.add(JChardetFacade.getInstance());
//ASCIIDetector用于ASCII编码测定
detector.add(ASCIIDetector.getInstance());
//UnicodeDetector用于Unicode家族编码的测定
detector.add(UnicodeDetector.getInstance());
java.nio.charset.Charset charset = null;
File f=new File("E://specialCar//test.csv");
try {
charset = detector.detectCodepage(new BufferedInputStream(new FileInputStream(f)),100);
} catch (Exception ex) {ex.printStackTrace();}
if(charset!=null){
System.out.println(f.getName()+"编码是:"+charset.name());
}else{
System.out.println(f.getName()+"未知");
}


采纳哈

⑨ java 中如何查看字符串的编码类型

可以通过以下方法来进行编码格式判断,输入一个字符串,之后返回字符串编码类型。
public static String getEncoding(String str) {
String encode = "GB2312";
try {
if (str.equals(new String(str.getBytes(encode), encode))) { //判断是不是GB2312
String s = encode;
return s; //是的话,返回“GB2312“,以下代码同理
}
} catch (Exception exception) {
}
encode = "ISO-8859-1";
try {
if (str.equals(new String(str.getBytes(encode), encode))) { //判断是不是ISO-8859-1
String s1 = encode;
return s1;
}
} catch (Exception exception1) {
}
encode = "UTF-8";
try {
if (str.equals(new String(str.getBytes(encode), encode))) { //判断是不是UTF-8
String s2 = encode;
return s2;
}
} catch (Exception exception2) {
}
encode = "GBK";
try {
if (str.equals(new String(str.getBytes(encode), encode))) { //判断是不是GBK
String s3 = encode;
return s3;
}
} catch (Exception exception3) {
}
return ""; //如果都不是,说明输入的内容不属于常见的编码格式。

⑩ java怎么判断byte的原字符串的编码

判定是否是UTF-8编码格式的代码片段如下:
[java] view plain
File file = new File(path);
InputStream in= new java.io.FileInputStream(file);
byte[] b = new byte[3];
in.read(b);
in.close();
if (b[0] == -17 && b[1] == -69 && b[2] == -65)
System.out.println(file.getName() + ":编码为UTF-8");
else
System.out.println(file.getName() + ":可能是GBK,也可能是其他编码");

阅读全文

与java字符串编码判断相关的资料

热点内容
优信二手车解压后过户 浏览:63
Windows常用c编译器 浏览:780
关于改善国家网络安全的行政命令 浏览:835
安卓如何下载网易荒野pc服 浏览:656
javainetaddress 浏览:106
苹果4s固件下载完了怎么解压 浏览:1005
命令zpa 浏览:288
python编译器小程序 浏览:946
在app上看视频怎么光线调暗 浏览:541
可以中文解压的解压软件 浏览:595
安卓卸载组件应用怎么安装 浏览:914
使用面向对象编程的方式 浏览:341
程序员项目经理的年终总结范文 浏览:932
内衣的加密设计用来干嘛的 浏览:435
淮安数据加密 浏览:295
魔高一丈指标源码 浏览:984
松下php研究所 浏览:169
c回调java 浏览:402
梦幻端游长安地图互通源码 浏览:747
电脑本地文件如何上传服务器 浏览:315