免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10958 | 回复: 12
打印 上一主题 下一主题

postgresql + jdbc + servlet 中文问题已经解决 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-13 00:28 |只看该作者 |倒序浏览
createdb -E unicode idg
create table area (area_id int, area_name varchar(32))
html encoding: iso8859_1
test: mozilla, links(set encoding to iso8859_1)
enviroment: rh72 english / resin-3 / postgresql-7.3.2 / j2sdk1.4.1 / pg73jdbc3.jar

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package web;

import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.*;
import java.sql.*;

public class Sender extends HttpServlet
{
        public void doGet(HttpServletRequest req,
                HttpServletResponse resp)
                throws ServletException, IOException
        {
                resp.setContentType("text/html; charset=iso8859_1";
                req.setCharacterEncoding("iso8859_1";

                Connection conn                 = null;
                PreparedStatement stmt        = null;
                ResultSet rs                        = null;
               
                String area = "上海";
               
                String driver        = "org.postgresql.Driver";
                String url                = "jdbc:postgresql://localhost:5432/idg";
                String user                = "idg";
                String passwd        = "idg";
                String update        = "insert into area values (21, ?)";
                String select        = "select * from area";

                PrintWriter pw        = resp.getWriter();
                               
                try
                {
                        Class.forName(driver);
                        conn        = DriverManager.getConnection(url, user, passwd);
                        stmt        = conn.prepareStatement(update);
                        // stmt.setInt(1, 21);
                        // stmt.setString(1, new String(area.getBytes(), "GBK");
                        stmt.setString(1, area);
                        stmt.executeUpdate();
                        rs                = stmt.executeQuery(select);
                       
                        while(rs.next())
                        {
                                int areaId = rs.getInt("area_id";
                                String areaName =  rs.getString("area_name";

                                pw.println( areaId + " " + areaName + "<br>;";
                        }
                }
                catch (Exception e)
                {
                        e.printStackTrace(pw);
                }
                finally
                {
                        try
                        {
                                // Always close properly
                                if(rs != null)
                                {
                                        rs.close();
                                }
                                if(stmt != null)
                                {
                                        stmt.close();
                                }
                                if(conn != null)
                                {
                                        conn.close();
                                }
                        }
                        catch(Exception e)
                        {
                                e.printStackTrace(pw);
                        }
                }
        }
}

论坛徽章:
0
2 [报告]
发表于 2003-03-13 10:32 |只看该作者

postgresql + jdbc + servlet 中文问题已经解决

后来用html做了个form来测试doPost,获得area_name,插入数据库,再取出来,显示正确

论坛徽章:
0
3 [报告]
发表于 2003-03-13 19:02 |只看该作者

postgresql + jdbc + servlet 中文问题已经解决

doPost(...)
{
   String area_name = request.getParameter("AreaName";
}

不需要使用String.getBytes(...)进行转换,可以直接把area_name用于操作

论坛徽章:
0
4 [报告]
发表于 2003-03-15 11:29 |只看该作者

postgresql + jdbc + servlet 中文问题已经解决

但是你会发现所有的postgresql数据库管理工具、自己在delphi下写的应用,全部读出来都是乱码,这个问题我足足不停反复试了三天

论坛徽章:
0
5 [报告]
发表于 2003-03-15 12:01 |只看该作者

postgresql + jdbc + servlet 中文问题已经解决

我也发现了,还没找到的办法去解决,数据用unicode存储,在别的工具里面不知道要怎么转换.在psql里面不管怎么set client_encoding to gbk/unicode/gb18030都不能正确显示出来

论坛徽章:
0
6 [报告]
发表于 2003-03-15 12:52 |只看该作者

postgresql + jdbc + servlet 中文问题已经解决

关键是是否能够强制引导windows或者delphi当中将数据库的裸数据
unicode->;GBK的转换,如果能做到这一点,我相信问题就解决了

论坛徽章:
0
7 [报告]
发表于 2003-03-15 13:52 |只看该作者

postgresql + jdbc + servlet 中文问题已经解决

我还不知道怎么用delphi,也没打算在windows上面用,这个就拜托你了,呵呵,有劳

论坛徽章:
0
8 [报告]
发表于 2003-03-15 16:25 |只看该作者

postgresql + jdbc + servlet 中文问题已经解决

惨! 孤军奋战的感觉

论坛徽章:
0
9 [报告]
发表于 2003-03-15 17:48 |只看该作者

postgresql + jdbc + servlet 中文问题已经解决

我也不知道怎么转换啊,比较麻烦的事情,这个是postgresql本身有点问题还是编程语言的问题呢?

论坛徽章:
0
10 [报告]
发表于 2003-03-17 08:41 |只看该作者

postgresql + jdbc + servlet 中文问题已经解决

我觉得不是pgsql的事情
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP