JAVA基础:JAVA编码问题的一些理解

文章作者 100test 发表时间 2007:03:14 16:55:28
来源 100Test.Com百考试题网


Java 语言默认的编码方式是UNICODE ,而我们中国人通常使用的文件和数据库都是基于 GB2312 或者 BIG5 等方式编码的,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢?本文将从汉字编码的常识入手,结合 Java 编程实例,分析以上两个问题并提出解决它们的方案:

1.在JSP程序中加入一条语句:
<%@page contentType="text/html.charset=gb2312" %>

2.在URL请示字符串的编码问题。
如果通过GET/POST方法从客户端传递过来的信息中包含汉字信息,SERVLET/JSP无法得到正确的值。
我们在调用request.getParameter("param_name")前指定应用程序所希望的编码方式。
也就是request.setCharacterEcoding()即可

3.在不同的平台编码的问题是不同的。
在linux平台上的标准是Iso8859_1,而在win2k下是GBK的,这些是默认的标准,如果你的服务器不是这样的,那么编译的问题一定会有问题。本人就遇到这样的问题,两台LINUX服务器,一台lang=en,一台lang=en,UTF8,被我搞了N长时间才找到原因。

3.我本人用的最多的转换编码的一个类(在linux平台),几乎可以解决所有的编码问题。类的方法非常解决。主要就是asc2gb()和gb2asc()这两个类。
package com.whaic.tools.

import java.io.UnsupportedEncodingException.

public class ECov
{
public static String asc2gb(String asc){
String ret.

if(asc==null)return asc.
try{
ret=new String(asc.getBytes("ISO8859_1"),"GB2312").
}
catch(UnsupportedEncodingException e){
ret=asc.
}
return ret.
}

public static String gb2asc(String gb){
String ret.
if(gb==null)return gb.
try{
ret=new String(gb.getBytes("GB2312"),"ISO8859_1").
}
catch(UnsupportedEncodingException e){
ret=gb.
}
return ret.
}
}


4.读写文件时的中文问题:

Read::

FileInputStream fis = new FileInputStream(strInFile).

InputStreamReader isr = new InputStreamReader(fis, "GB2312").

Reader in = new BufferedReader(isr).

int ch.


相关文章


JAVA基础:JSP与Servlet的区别
java新手入门:Java反射机制(下)
JAVA基础:JAVA编码问题的一些理解
JAVA基础:随机整数的生成
基础入门-列出当前系统的硬盘盘符
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛