java文件编码格式|java判断文件编码格式 怎么判断编码格式

java文件编码格式|java判断文件编码格式 怎么判断编码格式的第1张示图

1. 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字节:0xxxxxxx2字节:110xxxxx 10xxxxxx3字节:1110xxxx 10xxxxxx 10xxxxxx4字节: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(); }

2. JAVA中字符编码的原理是什么

system.out.println(charset.defaultcharset());字符编码(英语:characterencoding)也称字集码,是把字符集中的字符编码为指定集合中某一对象回(例如:比答特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递…

3. java中编码与解码分别指什么

java中编码:URLEncoder.encode(strUri,"utf-8");

java中解码码:URLDecoder.decode(strUri,"utf-8");

4. 如何获取java源文件编码格式

java中主要使用charset这个类来判断文件的编码格式,代码如下:

packagecom.ghj.packageoftool;importinfo.monitorenter.cpdetector.io.ASCIIDetector;importinfo.monitorenter.cpdetector.io.ByteOrderMarkDetector;importinfo.monitorenter.cpdetector.io.CodepageDetectorProxy;importinfo.monitorenter.cpdetector.io.JChardetFacade;importinfo.monitorenter.cpdetector.io.ParsingDetector;importinfo.monitorenter.cpdetector.io.UnicodeDetector;importjava.io.ByteArrayInputStream;importjava.io.File;importjava.io.InputStream;importjava.net.URL;importjava.nio.charset.Charset;/***文件工具类**@author高焕杰*/publicclassFileTool{/***获取本地文件的编码格式**@paramfile要判断的文件编码格式**@author高焕杰*/(FilelocalFile){/**cpDetector是探测器,它把探测任务交给具体的探测实现类的实例完成。*cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法加进来,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。*cpDetector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的字符集编码。cpDetector是基于统计学原理的,不保证完全正确。*/=CodepageDetectorProxy.getInstance();codepageDetector.add(newParsingDetector(false));//ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于指示是否显示探测过程的详细信息,为false不显示。codepageDetector.add(JChardetFacade.getInstance());//JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。codepageDetector.add(newByteOrderMarkDetector());codepageDetector.add(ASCIIDetector.getInstance());//ASCIIDetector用于ASCII编码测定codepageDetector.add(UnicodeDetector.getInstance());//UnicodeDetector用于Unicode家族编码的测定Charsetcharset=null;try{charset=codepageDetector.detectCodepage(localFile.toURI().toURL());if(charset!=null){returncharset.name();}}catch(Exceptione){e.printStackTrace();}returnnull;}/***获得远程URL文件的编码格式**@paramurl远程文件的URL路径**@author高焕杰*/(URLurl){/**cpDetector是探测器,它把探测任务交给具体的探测实现类的实例完成。*cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法加进来,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。*cpDetector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的字符集编码。cpDetector是基于统计学原理的,不保证完全正确。*/=CodepageDetectorProxy.getInstance();codepageDetector.add(newParsingDetector(false));//ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于指示是否显示探测过程的详细信息,为false不显示。codepageDetector.add(JChardetFacade.getInstance());//JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。codepageDetector.add(ASCIIDetector.getInstance());//ASCIIDetector用于ASCII编码测定codepageDetector.add(UnicodeDetector.getInstance());//UnicodeDetector用于Unicode家族编码的测定Charsetcharset=null;try{charset=codepageDetector.detectCodepage(url);if(charset!=null){returncharset.name();}}catch(Exceptione){e.printStackTrace();}returnnull;}/***获得文件流的编码格式**@paraminputStream文件流**@author高焕杰*/(InputStreaminputStream){/**cpDetector是探测器,它把探测任务交给具体的探测实现类的实例完成。*cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法加进来,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。*cpDetector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的字符集编码。cpDetector是基于统计学原理的,不保证完全正确。*/=CodepageDetectorProxy.getInstance();codepageDetector.add(newParsingDetector(false));//ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于指示是否显示探测过程的详细信息,为false不显示。codepageDetector.add(JChardetFacade.getInstance());//JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。codepageDetector.add(ASCIIDetector.getInstance());//ASCIIDetector用于ASCII编码测定codepageDetector.add(UnicodeDetector.getInstance());//UnicodeDetector用于Unicode家族编码的测定Charsetcharset=null;try{charset=codepageDetector.detectCodepage(inputStream,0);if(charset!=null){returncharset.name();}}catch(Exceptione){e.printStackTrace();}returnnull;}/***获得字符串的编码格式**@paramstringValue要判断的文件编码格式字符串**@author高焕杰*/(StringstringValue){/**cpDetector是探测器,它把探测任务交给具体的探测实现类的实例完成。*cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法加进来,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。*cpDetector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的字符集编码。cpDetector是基于统计学原理的,不保证完全正确。*/=CodepageDetectorProxy.getInstance();codepageDetector.add(newParsingDetector(false));//ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于指示是否显示探测过程的详细信息,为false不显示。codepageDetector.add(JChardetFacade.getInstance());//JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。codepageDetector.add(ASCIIDetector.getInstance());//ASCIIDetector用于ASCII编码测定codepageDetector.add(UnicodeDetector.getInstance());//UnicodeDetector用于Unicode家族编码的测定Charsetcharset=null;try{InputStreaminputStream=newByteArrayInputStream(stringValue.getBytes());charset=codepageDetector.detectCodepage(inputStream,3);if(charset!=null){returncharset.name();}}catch(Exceptione){e.printStackTrace();}returnnull;}}

5. java创建txt文件设置编码方式

可以通过“FileOutputStream”(此时指定编码格式即可)创建文件实例,之后过“OutputStreamWriter”流的形式进行回存储,举例:OutputStreamWriterpw=null;//定义一个流答pw=newOutputStreamWriter(newFileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次writepw.close();//关闭流备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。

6. Java 修改编码格式的几种方式

主要分response的字节字符输出流和接受中文参数doGet(),doPost()的设置四种.以及从服务器下载文件到浏览器的编码问题.都是我学习java时总结的,希望能帮到你.response的字节输出流:// 设置浏览器默认打开的时候采用的字符集编码response.setHeader("Content-Type", "text/html;charset=UTF-8");// 设置中文转成字节数组的时候取出的编码response.getOutputStream().write("如果不设置编码,这里就是乱码".getBytes("UTF-8"));response的字符输出流://设置浏览器默认打开的时候采用的字符集编码,response的字符流的缓冲区的编码.response.setContentType("text/html;charset=UTF-8");response.getWriter().println("中文");request的doGet()编码解决:String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");System.out.println("GET方式:"+name);request的doPost()编码解决:request.setCharacterEncoding("UTF-8");String name = request.getParameter("name");System.out.println("POST方式:"+name);下载文件时浏览器编码问题:protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 1.接收参数String filename = new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");System.out.println(filename);// 2.完成文件下载:// 2.1设置Content-Type头(获取文件的mime类型)String type = this.getServletContext().getMimeType(filename);//设置文件的mime类型response.setHeader("Content-Type", type);// 2.3web项目文件的绝对路径String realPath = this.getServletContext().getRealPath("/download/"+filename);// 获得浏览器的类型处理中文文件的乱码问题.(User-Agent:服务器收到客户端版本之类的一些信息)String agent = request.getHeader("User-Agent");System.out.println(agent);if(agent.contains("Firefox")){filename = base64EncodeFileName(filename);}else{//IE谷歌编码filename = URLEncoder.encode(filename,"UTF-8");}// 2.2设置Content-Disposition头(固定写法,让浏览器必须下载,不能直接打开)response.setHeader("Content-Disposition", "attachment;filename="+filename);//获得文件InputStream is = new FileInputStream(realPath);// 获得response指定的方法获取输出流:如果用其他流是直接拷贝而不是下载OutputStream os = response.getOutputStream();int len = 0;byte[] b = new byte[1024];while((len = is.read(b))!= -1){os.write(b, 0, len);}//响应流可以不关,在服务器做出相应后服务器会自动把response获得的流关闭is.close();}//火狐public static String base64EncodeFileName(String fileName) {BASE64Encoder base64Encoder = new BASE64Encoder();try {return "=?UTF-8?B?"+ new String(base64Encoder.encode(fileName.getBytes("UTF-8"))) + "?=";} catch (UnsupportedEncodingException e) {e.printStackTrace();throw new RuntimeException(e);}}

7. 如何为 Eclipse 中的 Java 源文件设置为 UTF-8 默认编码

要让抄一个 Java 源文件打开时编码格式为 UTF-8,需要做2件事情:1)设置Java 源文件的默认编码格式为UTF-8;2)设置workspace的编码格式为UTF-8。 相应设置如下: 设置 Java 源文件的默认编码格式为 UTF-8 在 Windows->Preference 页面中,选择 General->Content Types 在右边的框中,选择 Text->Java Source File,将下面的 Default Encoding 改为 UTF-8 设置 workspace 的编码格式为 UTF-8 在 Windows->Preference 页面中,选择 General->WorkSpace 选择右侧框中的 Text File encoding,改为 UTF-8 设置完这2处,默认打开 Java 源文件就是UTF-8编码了。

8. java怎么设置为utf-8的编码

要让一个Java源文件打开时编码格式为UTF-8,需要做2件事情:1)设置Java源文件的版默认编码格权式为UTF-8;2)设置workspace的编码格式为UTF-8。相应设置如下:设置Java源文件的默认编码格式为UTF-8在Windows->Preference页面中,选择General->ContentTypes在右边的框中,选择Text->JavaSourceFile,将下面的DefaultEncoding改为UTF-8设置workspace的编码格式为UTF-8在Windows->Preference页面中,选择General->WorkSpace选择右侧框中的TextFileencoding,改为UTF-8设置完这2处,默认打开Java源文件就是UTF-8编码了。

9. Java中如何设置编码格式

打开Eclipse,选择Window–〉Preferences–〉General—〉Workspace,然后在右边的界面就可以看见Other选项,选择即可设置编码格式。

未经允许不得转载:山九号 » java文件编码格式|java判断文件编码格式 怎么判断编码格式

赞 (0)