- 浏览: 158261 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
beee:
不错,顶啊
删除项目中的所有.svn文件夹(或CVS文件夹) -
Ts_Coo:
java socket编程入门 -
Jiangnan-Xia:
大哥果然相当凑活
删除项目中的所有.svn文件夹(或CVS文件夹) -
yangzhiqi463:
相当凑活
删除项目中的所有.svn文件夹(或CVS文件夹) -
卢水发:
你这东西太给力
删除项目中的所有.svn文件夹(或CVS文件夹)
JVM启动后,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编译说明:一般javac根据当前os区域设置,自动决定源文件的编码.可以通过-encoding强制指定.
错误可能: 1 gbk编码源文件在英文环境下编译,javac不能正确转换.曾见于java/jsp在英文unix下. 检测方法:写\u4e00格式的汉字,绕开javac编码,再在jvm中,将汉字作为int打印,看值是否相等;或直接以UTF-8编码打开.class文件,看看常量字符串是否正确保存汉字。
文件读写外部数据如文件经过读写和转换两个步骤,转为jvm所使用字符。InputStream/OutputStream用于读写原始外部数据,Reader/Writer执行读写和转换两个步骤。
1 文件读写转换由java.io.Reader/Writer执行;输入输出流 InputStream/OutputStream 处理汉字不合适,应该首选使用Reader/Writer,如 FileReader/FileWriter。
2 FileReader/FileWriter使用JVM当前编码读写文件.如果有其它编码格式,使用InputStreamReader/OutputStreamWriter
3 PrintStream有点特殊,它自动使用jvm缺省编码进行转换。
读取.properties文件.propeties文件由Properties类以iso8859-1编码读取,因此不能在其中直接写汉字,需要使用JDK 的native2ascii工具转换汉字为\uXXXX格式。命令行:native2ascii –encoding GBK inputfile outputfile
读取XML文件1 XML文件读写同于文件读写,但应注意确保XML头中声明如<? xml version=”1.0” encoding=”gb2312” ?>与文件编码保持一致。
2 javax.xml.SAXParser类接受InputStream作为输入参数,对于Reader,需要用org.xml.sax.InputSource包装一下,再给SAXParser。
3 对于UTF-8编码 XML,注意防止编辑器自动加上\uFFFE BOM头, xml parser会报告content is not allowed in prolog。
字节数组1 使用 new String(byteArray,encoding) 和 String.getBytes(encoding) 在字节数组和字符串之间进行转换
也可以用ByteArrayInputStream/ByteArrayOutputStream转为流后再用InputStreamReader/OutputStreamWriter转换。
错误编码的字符串(iso8859-1转码gbk)如果我们得到的字符串是由错误的转码方式产生的,例如:对于gbk中文,由iso8859-1方式转换,此时如果用调试器看到的字符串一般是 的样子,长度一般为文本的字节长度,而非汉字个数。
可以采用如下方式转为正确的中文: text = new String( text.getBytes(“iso8859-1”),”gbk”);
JDBC转换过程由JDBC Driver执行,取决于各JDBC数据库实现。对此经验尚积累不够。
1 对于ORACLE数据库,需要数据库创建时指定编码方式为gbk,否则会出现汉字转码错误 2 对于 SQL Server 2000 ,最好以nvarchar/nchar类型存放文本,即不存在中文/编码转换问题。 3 连接 Mysql,将 connectionString 设置成 encoding 为 gb2312: String connectionString = "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=gb2312";
WEB/Servlet/JSP1 对于JSP,确定头部加上 <%@ page contentType="text/html;charset=gb2312"%>这样的标签。 2 对于Servlet,确定 设置setContentType (“text/html; charset=gb2312”),以上两条用于使得输出汉字没有问题。 3 为输出HTML head中加一个 <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> ,让浏览器正确确定HTML编码。
4 为Web应用加一个Filter,确保每个Request明确调用setCharacterEncoding方法,让输入汉字能够正确解析。
——————————————————————————————————————
import java.io.UnsupportedEncodingException; /** /** public static void main(String[] args) throws UnsupportedEncodingException { 当我们从文件中读数据时,最好使用InputStream方式,然后采用String(byte[] bytes, String encoding)指明文件的编码方式。不要使用Reader方式,因为Reader方式会自动根据jdk指明的编码方式把文件内容转换成unicode 编码。 当我们从数据库中读文本数据时,采用ResultSet.getBytes()方法取得字节数组,同样采用带编码方式的字符串构造方法即可。 ResultSet rs; 不要采取下面的步骤。 ResultSet rs; 这种编码转换方式效率底。之所以这么做的原因是,ResultSet在getString()方法执行时,默认数据库里的数据编码方式为 iso8859-1。系统会把数据依照iso8859-1的编码方式转换成unicode。使用str.getBytes("iso8859-1")把数 据还原,然后利用new String(bytes, "gb2312")把数据从gb2312转换成unicode,中间多了好多步骤。 从HttpRequest中读参数时,利用reqeust.setCharacterEncoding()方法设置编码方式,读出的内容就是正确的了。 顺便说句,如果你直接在浏览器中的地址栏输入这个的话,浏览器都会使用ISO-8859-1来编码你的URL,然后才提交到服务器 |
发表评论
-
java keytool证书工具使用小结
2013-12-24 10:05 798Keytool 是一个Java数据证 ... -
Jboss6.0修改端口及windows平台下的安装
2013-12-12 20:04 844jboss下载地址: http://www.jboss.or ... -
java 获取文件的方式
2010-09-29 10:51 919首先,Java中的getResourceAsStream有 ... -
log4j 输出格式详解
2010-09-28 13:34 1981Log4j建议只使用四个级别,优先级从高到低分别是ERRO ... -
Hibernate读写Oracle BLOB
2010-09-26 14:41 1044CREATE TABLE TUSER( ID V ... -
Hibernate的generator属性的意义
2010-09-26 11:06 880本文讲述Hibernate的generator属性的意义。 ... -
Duplicate class/entity mapping错
2010-09-26 10:05 1206是因为hibernate-mapping中没有定义pac ... -
svn管理分支(转)
2010-04-21 17:45 1713转自(http://jasonchi.iteye.com/bl ... -
SVN trunk, branches and tag
2010-04-21 17:25 1732翻译者:zwws原 文: SVN trunk, branc ... -
JAXB for simple Java-XML serialization
2010-01-12 13:55 1836There're a number of way to do ... -
java导入导出excel操作(jxl)
2009-08-26 11:22 1189jxl.jar 包 下载地址: http://w ... -
Log4j配置文件
2009-08-04 15:11 1811b.log4j.properties ,为log4 ... -
Xpath表达式
2009-06-11 16:32 1597XPath 数据类型 XPath 可分为四种数据 ... -
Cron 表达式
2009-06-05 17:16 930Field Name ... -
java 定时任务
2009-06-05 16:42 1317用 Quartz 进行作业调度 ... -
程序形成死锁的四个条件
2009-05-12 15:02 860死锁的条件 互斥条件(Mutual exclusion):资源 ... -
介绍一个调试监测TCP链接的好工具
2009-02-26 10:31 2030最近在写WebService程序和Socket编程,将一个不错 ... -
java虚拟机垃圾回收机制
2009-01-05 12:00 2700一、相关概念 基本回收算法 引用计数(Reference C ... -
java application中内嵌ActiveX控件
2009-01-05 09:53 3396我这里用的是SWT/JFace开发applicati ... -
用脚本运行java GUI程序
2009-01-05 09:50 1867做了一段时间的java GUI编程,现在把一些心得写出来大家共 ...
相关推荐
java字符编码监听器
Java字符集和编码 ,Java字符集和编码Java字符集和编码
java_字符编码.txt Javajava_字符编码问题
java字符串的各种编码转换. java字符串的各种编码转换
Java字符编码及获取文件编码
java 字符编码问题,遇到各种乱码问题可以参考此文档,十分全面
java字符编码问题
Java中的字符集编码入门(五)Java代码中的字符编码转换Part1.pdf
通用的文件字符编码集判断需要借助第三方包cpdetector.jar 使用Cpdetector jar包检测文件编码需要依赖antlr-2.7.7.jar、chardet-1.0.jar、jargs-1.0.jar三个jar包 本下载资源一站式全包含,并附带亲测有效的片段...
java字符串编码转换和web中的字符串转换
一个详细的讲解JAVA_字符编码的例子 希望可以帮助到你。
上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。 ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),...
java字符集编码乱码详解
JAVA字符编码系列三[借鉴].pdf
字符编码检测和转换 附件中:FileEncodeDetector.java 此文件可以检测指定文件的编码格式 public static String getFileEncode(File file) {...} 附件中:FileCharsetConverter.java 此文件可以实现两个编码的相互...
NULL 博文链接:https://joard.iteye.com/blog/403031
java字符编码解析
本文介绍了字符与编码的发展过程,相关概念的正确理解。举例说明了一些实际应用中,编码的实现方法。然后,本文讲述了通常对字符与编码的几种误解,由于这些误解而导致乱码产生的原因,以及消除乱码的办法。本文的...
Java字符编码转换过程说明,用这个可以用jdk里的程序完成字符编码转换
Java字符编码原理.pdf