㈠ java中编码与解码分别指什么
java中编码:URLEncoder.encode(strUri,"utf-8");
java中解码码:URLDecoder.decode(strUri,"utf-8");
㈡ Java中字符集有哪些呢
字符集(character set)是一个系统支持的所有抽象字符的集合。字符(character)就是各种文字和符号,包括国家文字、标点符号、图形符号、数字等。
如果仅仅是抽象的字符集,其实是顾名思义的,但是我们常说的字符集,其实是指编码字符集(coded character set),比如: Unicode、ASCII、GB2312、GBK等等。什么是编码字符集呢?编码字符集是指,这个字符集里的每一个字符,都对应到唯一的一个代码值,这些代码值叫做代码点(code point),可以看做是这个字符在编码字符集里的序号,字符在给定的编码方式下的二进制比特序列称为代码单元(code unit)。在Unicode字符集中,字母A对应的数值是十六进制下的0041,书写时前面加U+,所以Unicode里A的代码点是U+0041。
常见的编码字符集有:
Unicode:也叫统一字符集,它包含了几乎世界上所有的已经发现且需要使用的字符(如中文、日文、英文、德文等)。
ASCII:早期的计算机系统只能处理英文,所以ASCII也就成为了计算机的缺省字符集,包含了英文所需要的所有字符。
GB2312:中文字符集,包含ASCII字符集。ASCII部分用单字节表示,剩余部分用双字节表示。
GBK:GB2312的扩展,完整包含了GB2312的所有内容。
GB18030:GBK字符集的超集,常叫大汉字字符集,也叫CJK(Chinese,Japanese,Korea)字符集,包含了中、日、韩三国语言中的所有字符。
学习相关java类知识,推荐来北京尚学堂,优秀的师资和科学的授课方式,会带给你完美的学习体验。
㈢ Java语言所使用的字符集是什么
Java语言所使用的字符集是16位Unicode编码。另外再介绍一些常见的字符集:x0dx0ax0dx0a1、最早在dos下写pascal的时候,就遇到ASCII字符集,后来还是dos下写c,也是ascii字符集x0dx0a特点:目前最通用的单字节编码字符集x0dx0a表示:单字节x0dx0a最早ascii用7bit表示,总共能表示2^7=128个字符,后来扩展到8bit,就表示2^8=256个字符x0dx0a2、GB2312又称为GB2312-80字符集,全称为《信息交换用汉字编码字符集·基本集》,由原中国国家标准总局发布,1981年5月1日实施。x0dx0a特点:当然是能表示99%的中国汉字,还包括拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母等x0dx0a表示:双字节x0dx0a3、GBK是汉字编码标准之一,全称《汉字内码扩展规范》,GBK 向下与GB2312编码兼容,向上支持ISO10646.1国际标准。可以认为GBK是在GB2313基础上通过内码扩展出来的一个标准。x0dx0a特点:完全兼容GB2312标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字x0dx0a表示:双字节x0dx0a4、Big5,台湾那边使用比较多。x0dx0a5、GB 18030,全称是GB18030-2000《信息交换用汉字编码字符集基本集的扩充》,是我国政府于2000年3月17日发布的新的汉字编码国家标准,2001年8月31日后在中国市场上发布的软件必须符合本标准。x0dx0a特点:就是强大。覆盖中文、日文、朝鲜语和中国少数民族文字。满足中国大陆、香港、台湾、日本和韩国等东亚地区信息交换多文种、大字量、多用途、统一编码格式的要求。并且与Unicode 3.0版本兼容,填补Unicode扩展字符字汇“统一汉字扩展A”的内容。并且与以前的国家字符编码标准(GB2312,GB13000.1)兼容。x0dx0a表示:单字节、双字节、四字节三种方式x0dx0a6、Unicode野心更大(当然有一个国际统一标准当然是好事)x0dx0a特点:Unicode是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。x0dx0a表示:utf-8,utf-16,utf-32x0dx0a这里可能有点不好理解,举个例子x0dx0a首先,把unicode理解成对所有字符做了一个统一的编号,比如:“字”这个字符,编号是23383,这个是unicode定义的x0dx0a但是,在计算机中,如何存储这个编号呢?方式就有很多,存储unicode的方式,就是utf-8,utf-16,utf-32x0dx0a23383数值的16进制表示:0x5b57x0dx0autf-8用3个字节来表示汉字,所以utf-8的表示为:0xE5AD97x0dx0autf-16用2个字节来表示汉字,所以utf-16的表示为:0x5b57 刚好和数值是一样的x0dx0autf-32用4个字节来表示汉字,所以utf-32的表示为:0x00005b57 和数值是一样的,不过浪费空间x0dx0a7、再来讲讲utf-8,它是一种变长的字符集x0dx0a表示:单字节来表示字母,双字节来表示一些希腊字母,三字节来表示汉字,当然也有四字节的x0dx0a这么做当然会增加表示和识别的难度,不过,可以节省空间。这也是为什么utf-8在网络编码中流行的原因。x0dx0a
㈣ java字符串默认的是什么编码
System.out.println(Charset.defaultCharset());
字符编码(英语:Character encoding)也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式存储。
在计算机技术发展的早期,如ASCII(1963年)和EBCDIC(1964年)这样的字符集逐渐成为标准。但这些字符集的局限很快就变得明显,于是人们开发了许多方法来扩展它们。对于支持包括东亚CJK字符家族在内的写作系统的要求能支持更大量的字符,并且需要一种系统而不是临时的方法实现这些字符的编码。
㈤ Java中的字符采用的是两个字节编码的什么字符集。
java平台采用UTF-16(Unicode)编码,一个字符占2个字节(不论英文,还是中文字符)。
㈥ java 怎么获得文件编码格式
java课程设计例子
Java如何获取文件编码格式
1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK。
按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。其实,如果项目运行的平台就是中文操作系统,如果这些文本文件在项目内产生,即开发人员可以控制文本的编码格式,只要判定两种常见的编码就可以了:GBK和UTF-8。由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式。
对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下:
Filefile=newFile(path);
InputStreamin=newjava.io.FileInputStream(file);
byte[]b=newbyte[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,也可能是其他编码");
2:若想实现更复杂的文件编码检测,可以使用一个开源项目cpdetector,它所在的网址是:http://cpdetector.sourceforge.net/。它的类库很小,只有500K左右,cpDetector是基于统计学原理的,不保证完全正确,利用该类库判定文本文件的代码如下:
读外部文件(先利用cpdetector检测文件的编码格式,然后用检测到的编码方式去读文件):
/**
*利用第三方开源包cpdetector获取文件编码格式
*
*@parampath
*要判断文件编码格式的源文件的路径
*@authorhuanglei
*@version2012-7-1214:05
*/
(Stringpath){
/*
*detector是探测器,它把探测任务交给具体的探测实现类的实例完成。
*cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法加进来,如ParsingDetector、
*JChardetFacade、ASCIIDetector、UnicodeDetector。
*detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的
*字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar
*cpDetector是基于统计学原理的,不保证完全正确。
*/
CodepageDetectorProxydetector=CodepageDetectorProxy.getInstance();
/*
*ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于
*指示是否显示探测过程的详细信息,为false不显示。
*/
detector.add(newParsingDetector(false));
/*
*JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码
*测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以
*再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。
*/
detector.add(JChardetFacade.getInstance());//用到antlr.jar、chardet.jar
//ASCIIDetector用于ASCII编码测定
detector.add(ASCIIDetector.getInstance());
//UnicodeDetector用于Unicode家族编码的测定
detector.add(UnicodeDetector.getInstance());
java.nio.charset.Charsetcharset=null;
Filef=newFile(path);
try{
charset=detector.detectCodepage(f.toURI().toURL());
}catch(Exceptionex){
ex.printStackTrace();
}
if(charset!=null)
returncharset.name();
else
returnnull;
}
StringcharsetName=getFileEncode(configFilePath);
System.out.println(charsetName);
inputStream=newFileInputStream(configFile);
BufferedReaderin=newBufferedReader(newInputStreamReader(inputStream,charsetName));读jar包内部资源文件(先利用cpdetector检测jar内部的资源文件的编码格式,然后以检测到的编码方式去读文件):
/**
*利用第三方开源包cpdetector获取URL对应的文件编码
*
*@parampath
*要判断文件编码格式的源文件的URL
*@authorhuanglei
*@version2012-7-1214:05
*/
(URLurl){
/*
*detector是探测器,它把探测任务交给具体的探测实现类的实例完成。
*cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法加进来,如ParsingDetector、
*JChardetFacade、ASCIIDetector、UnicodeDetector。
*detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的
*字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar
*cpDetector是基于统计学原理的,不保证完全正确。
*/
CodepageDetectorProxydetector=CodepageDetectorProxy.getInstance();
/*
*ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于
*指示是否显示探测过程的详细信息,为false不显示。
*/
detector.add(newParsingDetector(false));
/*
*JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码
*测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以
*再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。
*/
detector.add(JChardetFacade.getInstance());//用到antlr.jar、chardet.jar
//ASCIIDetector用于ASCII编码测定
detector.add(ASCIIDetector.getInstance());
//UnicodeDetector用于Unicode家族编码的测定
detector.add(UnicodeDetector.getInstance());
java.nio.charset.Charsetcharset=null;
try{
charset=detector.detectCodepage(url);
}catch(Exceptionex){
ex.printStackTrace();
}
if(charset!=null)
returncharset.name();
else
returnnull;
}
URLurl=CreateStationTreeModel.class.getResource("/resource/"+"配置文件");
URLConnectionurlConnection=url.openConnection();
inputStream=urlConnection.getInputStream();
StringcharsetName=getFileEncode(url);
System.out.println(charsetName);
BufferedReaderin=newBufferedReader(newInputStreamReader(inputStream,charsetName));
3:探测任意输入的文本流的编码,方法是调用其重载形式:
charset=detector.detectCodepage(待测的文本输入流,测量该流所需的读入字节数);
上面的字节数由程序员指定,字节数越多,判定越准确,当然时间也花得越长。要注意,字节数的指定不能超过文本流的最大长度。
4:判定文件编码的具体应用举例:
属性文件(.properties)是Java程序中的常用文本存储方式,象STRUTS框架就是利用属性文件存储程序中的字符串资源。它的内容如下所示:
#注释语句
属性名=属性值
读入属性文件的一般方法是:
FileInputStreamios=newFileInputStream(“属性文件名”);
Propertiesprop=newProperties();
prop.load(ios);
Stringvalue=prop.getProperty(“属性名”);
ios.close();
利用java.io.Properties的load方法读入属性文件虽然方便,但如果属性文件中有中文,在读入之后就会发现出现乱码现象。发生这个原因是load方法使用字节流读入文本,在读入后需要将字节流编码成为字符串,而它使用的编码是“iso-8859-1”,这个字符集是ASCII码字符集,不支持中文编码,
方法一:使用显式的转码:
Stringvalue=prop.getProperty(“属性名”);
StringencValue=newString(value.getBytes(“iso-8859-1″),”属性文件的实际编码”);
方法二:象这种属性文件是项目内部的,我们可以控制属性文件的编码格式,比如约定采用Windows内定的GBK,就直接利用”gbk”来转码,如果约定采用UTF-8,就使用”UTF-8″直接转码。
方法三:如果想灵活一些,做到自动探测编码,就可利用上面介绍的方法测定属性文件的编码,从而方便开发人员的工作
补充:可以用下面代码获得Java支持编码集合:
Charset.availableCharsets().keySet();
可以用下面的代码获得系统默认编码:
Charset.defaultCharset();
㈦ 几种判断字符集编码的方法(Java) 未完
如果是Java的String对象的话,则一定是Unicode的,这个没有为什么,Java就是这么定的。
我猜你的问题应该是如何判断一段字节流是什么编码类型,对吗?比如一个文件,或是网络上面取下来的一段Byte数组,你需要用一个合适的编码来解析成字符串。
这个让你失望了,没有一个文档化的,确定的方法来判断,只能用测试的方法,这个方法也只是猜测,不能百分百的确定,方法如下:
用常见的编码方式对字节流进行解码,比如Unicode,UTF8, UTF8 without BOM,UTF16, ANSI等等。
对解析的结果进行判断,是不是一个合理的可打印字符,可打印字符最多的解码方式就是最可能的编码了。
如何判断可打印字符?流程如下:把解析好的字符串按照字符进行遍历,把每一个字符转化成Unicode编码,看看这些编码是不是Unicode的支持范围极客。
如果发现有种编码方式都是可打印字符,那么再使用本步骤:对字符串进行分词,分词这个在此不作赘述,你自己再研究一下。分词效果好的就是最可能的编码了。(不过通常到第三步就能搞定了,第四部绝大部分用不着)
㈧ JAVA中怎样改变本地字符集编码
System.out.println(new String(strInfo.getBytes("ISO-8859-1"),"gb2312")); 你在输出的时候这么转码,还会输出乱码,见鬼了
㈨ 如何查找默认的字符集/编码在Java中
1, Java代码直接设置
System.out.println(System.getProperty("file.encoding"));
或
System.out.println(Charset.defaultCharset());
2,eclipse里面选中工程->properties->Resource:text file encoding 改成你的原文件编码格式即可;
3,一般配置jdbc连接字符串的时候可以指定字符编码集,指定成和数据库的编码一致即可,这样用jdbc读出来的数据就是解码后的正常的数据。当然,不同的数据库产品具体看怎么办。