关于中文显示的问题(在线等待) new String((rs.getString()).getBytes(), GB_2312)试试,GB_2312的地方你可以多试几种编码方式,如:ISO_8859_1, GBK等,试试有什么区别;然后可以找一些相关的资料看一看这个问题的本质! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在取表单提交过来的数据时, request.getParameter()前加上request.setCharacterEncoding("GBK"); java 编码方式是 unicode西文方式,也就是说,编译以后的java类是按西文方式编码的,中文编码方式是GBK(子集GB2312),当中文存入数据库时,是按中文编码方式存入的,rs.getString 读出来的中文编码方式的字符,系统当然不认识了,所以??? 解决方法,在java系统中,用中文编码方式输出: readStr=rs.getString(""); byte[] b=readStr.getBytes("GBK"); String strOut=new String(b,"iso88591_1");你的中文就显示出来了!:〉 to jacke2003xc(风云一号):String fieldsValue =rs.getString(i);byte[] b=fieldsValue.getBytes("GBK");String strOut=new String(b,"ISO_8859_1");我用了你的方法试过后,还是不行哦,而且还提示有NullPointerException错误。能给我一个完整的这方面程序吗? 不可能 你把你的调用程序贴出来看看 怎么会有NullPointerException呢,肯定你程序写的有问题?!!! to jacke2003xc(风云一号):/** * @version 1.20 1999-07-26 * @author Cay Horstmann */import java.net.*;import java.sql.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;import javax.swing.*;public class ViewDB{ public static void main(String[] args) { JFrame frame = new ViewDBFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocation(300,300); frame.show(); }}class ViewDBFrame extends JFrame{ public ViewDBFrame() { setTitle("ViewDB"); setSize(300, 200); Container contentPane = getContentPane(); tableNames = new JComboBox(); tableNames.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent evt) { showTable((String) tableNames.getSelectedItem()); } }); contentPane.add(tableNames,BorderLayout.NORTH); try { con = getConnection(); meta=con.getMetaData(); createStatement(); getTableNames(); } catch(Exception e) { JOptionPane.showMessageDialog(this, e); } JPanel buttonpanel = new JPanel(); contentPane.add(buttonpanel,BorderLayout.SOUTH); if (scrolling) { previousButton = new JButton("prev"); previousButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent evt) { showPreviousRow(); } }); } buttonpanel.add(previousButton); nextButton = new JButton("next"); nextButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent evt) { showNextRow(); } }); buttonpanel.add(nextButton); addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent evt) { try { stat.close(); con.close(); } catch(SQLException e) { while (e!=null) { JOptionPane.showMessageDialog(null,e); e=e.getNextException(); } } } }); } public static Connection getConnection() throws SQLException,ClassNotFoundException { Class.forName("oracle.jdbc.driver.OracleDriver"); String url="jdbc:oracle:oci8:@gisdata"; String username="dbo"; String password="pass"; return DriverManager.getConnection(url, username, password); } private void showTable(String tableName) { try { if(rs!= null) rs.close(); rs=stat.executeQuery("select * from " + tableName); if(scrollPane!=null) getContentPane().remove(scrollPane); dataPanel = new DataPanel(rs); scrollPane = new JScrollPane(dataPanel); getContentPane().add(scrollPane,BorderLayout.CENTER); validate(); showNextRow(); } catch(Exception e) { JOptionPane.showMessageDialog(this,e); } } private void showPreviousRow() { try { if(rs==null || rs.isFirst()) return; rs.previous(); dataPanel.showRow (rs); } catch(Exception ex) { System.out.print("Error: " + ex); } } private void showNextRow() { try { if(rs==null || rs.isLast()) return; if(!rs.next()) { rs.close(); rs = null; return; } dataPanel.showRow(rs); } catch(Exception ex) { System.out.print("Error: " + ex); } } private void createStatement() throws SQLException { if (meta.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE)) { stat=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); scrolling=true; } else { stat=con.createStatement(); scrolling=false; } } private void getTableNames() throws SQLException { ResultSet mrs = meta.getTables(null,null,null, new String[]{ "TABLE"}); while (mrs.next()) { tableNames.addItem(mrs.getString(3)); } mrs.close(); } private JButton nextButton; private JButton previousButton; private JComboBox tableNames; private ArrayList fields; private boolean scrolling; private Connection con; private Statement stat; private DatabaseMetaData meta; private ResultSet rs; private JScrollPane scrollPane; private DataPanel dataPanel;}class DataPanel extends JPanel{ public DataPanel(ResultSet rs) throws SQLException { fields = new ArrayList(); setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.weighty=100; ResultSetMetaData rsmd=rs.getMetaData(); for(int i=1;i<=rsmd.getColumnCount();i++) { String columnName = rsmd.getColumnLabel(i); int columnWidth = rsmd.getColumnDisplaySize(i); JTextField tb = new JTextField(columnWidth); fields.add(tb); gbc.weightx = 0; gbc.anchor = GridBagConstraints.EAST; gbc.fill = GridBagConstraints.NONE; add(new JLabel(columnName),gbc,0,i-1, 1,1); gbc.weightx=100; gbc.anchor = GridBagConstraints.WEST; add(tb,gbc,1,i-1,1,1); } } public void showRow(ResultSet rs) throws SQLException,UnsupportedEncodingException //从数据库里面取数据 { for(int i=1;i<=fields.size();i++) { String fieldsValue =rs.getString(i); byte[] b=fieldsValue.getBytes("GBK"); String strOut=new String(b,"ISO_8859_1"); JTextField tb =(JTextField)fields.get(i - 1); tb.setText(strOut); } } private void add(Component c,GridBagConstraints gbc,int x,int y,int w,int h) { gbc.gridx=x; gbc.gridy=y; gbc.gridwidth=w; gbc.gridheight=h; add(c,gbc); } private ArrayList fields;} public String getStr(String str){ try { String temp_p=str; byte[] temp_t=temp_p.getBytes("ISO8859-1");//ISO8859-1 String temp=new String(temp_t); return temp; } catch(Exception e) { } return "";} String temp=getStr(rs.getString("你的字段")); 建议你先不要用UI ,先设计个带有main的class 调试一下 class.forName();Connection con=.......... stmt=....String a=rs.getString("子段名")byte[] b=a.getBytes("GBK")................这样,更容易调试,然后把错误信息告诉我! jacke2003xc(风云一号) ( ) :真的很奇怪,如果我不用ui的话,直接用rs.getString("子段名"),都能够把中文显示出来,真奇怪,为什么加ui后就不行呢?但我的程序没错啊! java 程序中加入时间 Java access modifer笔试题,你能答对吗? J2SE问题 表格操作问题,大虾指点!急等!! 找出BUG成功运行24小时不死,散分! 关于linux环境下界面程序中文无法显示的问题.急!!! Jtable eclipse开发java的问题? 我是哈尔滨人 有一个项目 是我的毕业设计 我花人民币 找人指导我做 关于java打印 请问的流问题,我急呀,是程序员的都来帮一把,谢谢! 我想在linux下使用java,已经安装jdk了,请问如何设置环境变量?
request.setCharacterEncoding("GBK");
byte[] b=readStr.getBytes("GBK");
String strOut=new String(b,"iso88591_1");你的中文就显示出来了!:〉
String fieldsValue =rs.getString(i);
byte[] b=fieldsValue.getBytes("GBK");
String strOut=new String(b,"ISO_8859_1");
我用了你的方法试过后,还是不行哦,而且还提示有NullPointerException错误。
能给我一个完整的这方面程序吗?
* @version 1.20 1999-07-26
* @author Cay Horstmann
*/import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;public class ViewDB
{ public static void main(String[] args)
{
JFrame frame = new ViewDBFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(300,300);
frame.show();
}
}class ViewDBFrame extends JFrame
{
public ViewDBFrame()
{
setTitle("ViewDB");
setSize(300, 200);
Container contentPane = getContentPane(); tableNames = new JComboBox();
tableNames.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
showTable((String) tableNames.getSelectedItem());
}
});
contentPane.add(tableNames,BorderLayout.NORTH); try
{ con = getConnection();
meta=con.getMetaData();
createStatement();
getTableNames();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this, e);
}
JPanel buttonpanel = new JPanel();
contentPane.add(buttonpanel,BorderLayout.SOUTH);
if (scrolling)
{
previousButton = new JButton("prev");
previousButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
showPreviousRow();
}
});
}
buttonpanel.add(previousButton);
nextButton = new JButton("next");
nextButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
showNextRow();
}
});
buttonpanel.add(nextButton);
addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
try
{
stat.close();
con.close();
}
catch(SQLException e)
{
while (e!=null)
{
JOptionPane.showMessageDialog(null,e);
e=e.getNextException();
}
}
}
});
} public static Connection getConnection()
throws SQLException,ClassNotFoundException
{
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:oci8:@gisdata";
String username="dbo";
String password="pass";
return
DriverManager.getConnection(url, username, password);
} private void showTable(String tableName)
{
try
{
if(rs!= null)
rs.close();
rs=stat.executeQuery("select * from " + tableName);
if(scrollPane!=null)
getContentPane().remove(scrollPane);
dataPanel = new DataPanel(rs);
scrollPane = new JScrollPane(dataPanel);
getContentPane().add(scrollPane,BorderLayout.CENTER);
validate();
showNextRow();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,e);
}
}
private void showPreviousRow()
{
try
{
if(rs==null || rs.isFirst())
return;
rs.previous();
dataPanel.showRow (rs);
}
catch(Exception ex)
{
System.out.print("Error: " + ex);
}
}
private void showNextRow()
{
try
{
if(rs==null || rs.isLast())
return;
if(!rs.next())
{
rs.close();
rs = null;
return;
}
dataPanel.showRow(rs);
}
catch(Exception ex)
{
System.out.print("Error: " + ex);
}
}
private void createStatement() throws SQLException
{
if (meta.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE))
{
stat=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
scrolling=true;
}
else
{
stat=con.createStatement();
scrolling=false;
}
}
private void getTableNames() throws SQLException
{
ResultSet mrs = meta.getTables(null,null,null, new String[]{ "TABLE"});
while (mrs.next())
{
tableNames.addItem(mrs.getString(3));
}
mrs.close();
}
private JButton nextButton;
private JButton previousButton;
private JComboBox tableNames;
private ArrayList fields;
private boolean scrolling;
private Connection con;
private Statement stat;
private DatabaseMetaData meta;
private ResultSet rs;
private JScrollPane scrollPane;
private DataPanel dataPanel;
}class DataPanel extends JPanel
{
public DataPanel(ResultSet rs) throws SQLException
{
fields = new ArrayList();
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.weighty=100;
ResultSetMetaData rsmd=rs.getMetaData();
for(int i=1;i<=rsmd.getColumnCount();i++)
{
String columnName = rsmd.getColumnLabel(i);
int columnWidth = rsmd.getColumnDisplaySize(i);
JTextField tb = new JTextField(columnWidth);
fields.add(tb);
gbc.weightx = 0;
gbc.anchor = GridBagConstraints.EAST;
gbc.fill = GridBagConstraints.NONE;
add(new JLabel(columnName),gbc,0,i-1, 1,1);
gbc.weightx=100;
gbc.anchor = GridBagConstraints.WEST;
add(tb,gbc,1,i-1,1,1);
}
}
public void showRow(ResultSet rs) throws SQLException,UnsupportedEncodingException //从数据库里面取数据 {
for(int i=1;i<=fields.size();i++)
{
String fieldsValue =rs.getString(i);
byte[] b=fieldsValue.getBytes("GBK");
String strOut=new String(b,"ISO_8859_1");
JTextField tb =(JTextField)fields.get(i - 1);
tb.setText(strOut);
}
}
private void add(Component c,GridBagConstraints gbc,int x,int y,int w,int h)
{
gbc.gridx=x;
gbc.gridy=y;
gbc.gridwidth=w;
gbc.gridheight=h;
add(c,gbc);
}
private ArrayList fields;
}
{
try
{
String temp_p=str;
byte[] temp_t=temp_p.getBytes("ISO8859-1");//ISO8859-1
String temp=new String(temp_t);
return temp;
}
catch(Exception e)
{ }
return "";
}
Connection con=......
.... stmt=....String a=rs.getString("子段名")
byte[] b=a.getBytes("GBK")
................这样,更容易调试,然后把错误信息告诉我!
真的很奇怪,如果我不用ui的话,直接用rs.getString("子段名"),都能够把中文显示出来,
真奇怪,为什么加ui后就不行呢?但我的程序没错啊!