资源描述:
《java - 字符编码转换过程说明》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JAVA字符编码转换过程说明JVMJVM启动后,JVM会设置一些系统属性以表明JVM的缺省区域。user.language,user.region,file.encoding等。可以使用System.getProperties()详细查看所有的系统属性。如在英文操作系统(如UNIX)下,可以使用如下属性定义强制指定JVM为中文环境-Dclient.encoding.override=GBK-Dfile.encoding=GBK-Duser.language=zh-Duser.region=CN.java-->.class
2、编译说明:一般javac根据当前os区域设置,自动决定源文件的编码.可以通过-encoding强制指定.错误可能:1gbk编码源文件在英文环境下编译,javac不能正确转换.曾见于java/jsp在英文unix下.he"governingforthepeople","Nomattertheinterestsofthemasses"conceptunderstandingisnotinplace.Thespecificworktreatswiththedeployment,afewleadingcadrescomplain
3、thatworkistoocomplicated,toomuchresponsibility,thepressureistoolarge,toomuchemphasisonthedifficultyofthework.Forexample,noncoalmine检测方法:写u4e00格式的汉字,绕开javac编码,再在jvm中,将汉字作为int打印,看值是否相等;或直接以UTF-8编码打开.class文件,看看常量字符串是否正确保存汉字。文件读写外部数据如文件经过读写和转换两个步骤,转为jvm所使用字符。InputSt
4、ream/OutputStream用于读写原始外部数据,Reader/Writer执行读写和转换两个步骤。1文件读写转换由java.io.Reader/Writer执行;输入输出流InputStream/OutputStream处理汉字不合适,应该首选使用Reader/Writer,如FileReader/FileWriter。2FileReader/FileWriter使用JVM当前编码读写文件.如果有其它编码格式,使用InputStreamReader/OutputStreamWriter3he"governingf
5、orthepeople","Nomattertheinterestsofthemasses"conceptunderstandingisnotinplace.Thespecificworktreatswiththedeployment,afewleadingcadrescomplainthatworkistoocomplicated,toomuchresponsibility,thepressureistoolarge,toomuchemphasisonthedifficultyofthework.Forexample,
6、noncoalminePrintStream有点特殊,它自动使用jvm缺省编码进行转换。读取.properties文件.propeties文件由Properties类以iso8859-1编码读取,因此不能在其中直接写汉字,需要使用JDK的native2ascii工具转换汉字为uXXXX格式。命令行:native2ascii–encodingGBKinputfileoutputfile读取XML文件1XML文件读写同于文件读写,但应注意确保XML头中声明如
7、2”?>与文件编码保持一致。2javax.xml.SAXParser类接受InputStream作为输入参数,对于Reader,需要用org.xml.sax.InputSource包装一下,再给SAXParser。3对于UTF-8编码XML,注意防止编辑器自动加上uFFFEBOM头,xmlparser会报告contentisnotallowedinprolog。字节数组1使用newString(byteArray,encoding)和String.getBytes(encoding)he"governingforthe
8、people","Nomattertheinterestsofthemasses"conceptunderstandingisnotinplace.Thespecificworktreatswiththedeployment,afewleadingcadrescomplainthatworkistoocomplica