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);
}
}
}
}
| joint 回复于:2003-03-13 10:32:31 |
| 后来用html做了个form来测试doPost,获得area_name,插入数据库,再取出来,显示正确 |
| joint 回复于:2003-03-13 19:02:58 |
| doPost(...) { String area_name = request.getParameter("AreaName"); } 不需要使用String.getBytes(...)进行转换,可以直接把area_name用于操作 |
| gz85521734 回复于:2003-03-15 11:29:19 |
| 但是你会发现所有的postgresql数据库管理工具、自己在delphi下写的应用,全部读出来都是乱码,这个问题我足足不停反复试了三天 |
| joint 回复于:2003-03-15 12:01:36 |
| 我也发现了,还没找到的办法去解决,数据用unicode存储,在别的工具里面不知道要怎么转换.在psql里面不管怎么set client_encoding to gbk/unicode/gb18030都不能正确显示出来 |
| gz85521734 回复于:2003-03-15 12:52:24 |
| 关键是是否能够强制引导windows或者delphi当中将数据库的裸数据 unicode->GBK的转换,如果能做到这一点,我相信问题就解决了 |
| joint 回复于:2003-03-15 13:52:16 |
| 我还不知道怎么用delphi,也没打算在windows上面用,这个就拜托你了,呵呵,有劳 |
| gz85521734 回复于:2003-03-15 16:25:31 |
| 惨! 孤军奋战的感觉 |
| joint 回复于:2003-03-15 17:48:58 |
| 我也不知道怎么转换啊,比较麻烦的事情,这个是postgresql本身有点问题还是编程语言的问题呢? |
| gz85521734 回复于:2003-03-17 08:41:27 |
| 我觉得不是pgsql的事情 |
| joint 回复于:2003-03-17 11:38:23 |
| 回头我再看看处理中文还有没有别的办法,但是用euc_cn我觉得不是好办法,总有可能要输入别的字符集,要么是unicode,要么是ascii这两种?还有别的字符集能用吗? |
| netkiller 回复于:2003-03-17 19:01:33 |
| nmap ip 后看不到5432端口????? 急。。。 |
| joint 回复于:2003-03-18 10:39:20 |
| ps -ax看看pgsql有没有起来 |






