如何处理各种编码(utf-8,gb2312,big5...)(100分)

  • 主题发起人 主题发起人 feifeich
  • 开始时间 开始时间
F

feifeich

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位高手,从数据库中取得的字符串,编码未知(可能是UTF-8,GB2312,GIB5,ASCII等),如何检测是何种编码,如何统一转换为UTF-8编码?
因为希望在同一页面上能显示简体、繁体中文,以及其它语言,所以想用UTF-8作为页面编码,这个方法在PHP中已经测试通过,效果很好。最近刚跨入JAVA,查了资料还是不知道在JAVA中如何处理,请高手指点,非常感谢。
 
查了不少资料,看来这是个大难题啊。
有个chardet.jar的包好像是处理这个的,这是从mozilla中的代码转换到java的,不过我还没用出来[:(]
 
我用chardet.jar检测出来的都是错的[:(]
 
不知这样行不行:
public synchronized String getUTF(String str) {
if (str==null) return null;
try {
byte[] bytes = str.getBytes();//不行则试试str.getBytes( "ISO8859-1" )
String sRet = new String(bytes, "UTF-8");
return sRet;
}catch(Exception e) {
return str;
}
}
 
早就试过了,可惜不行呀
 
退一步吧,现在只要知道客户端是以何种编码提交数据的也可以,看下面的例子,在浏览器里分别把编码改为GB2312和UTF-8提交中文试试:
<%@ page contentType="text/html;
charset=UTF-8" %>
<html>
<head>
<title>test</title>
</head>
<body>
<%
String test1 = request.getParameter("test1");
if (test1 != null)
out.println("utf-8 encoded: " + new String(test1.getBytes("ISO-8859-1"), "UTF-8"));
out.println("<br>");
out.println("encoding: " + request.getCharacterEncoding());
out.println("<br>");
if (test1 != null)
out.println("direct output: " + test1);
out.println("<br>");
out.println("gb2312 encoded: " + new String(test1.getBytes("ISO-8859-1"), "GB2312"));
%>
<form>
<input type="text" name="test1"> <input type="submit" name="submit1">
</form>
</body>
</html>
 
你参考一下
http://www.2ccc.com/article.asp?articleid=648
 
参考
http://www.java-cn.com
 
后退
顶部