请教一个简单的java问题,回答者给分,多谢! (100分)

  • 主题发起人 主题发起人 李崇文
  • 开始时间 开始时间

李崇文

Unregistered / Unconfirmed
GUEST, unregistred user!
我从Oracle816中取出表中数据时,数据表原纪录数据为
name birthday
那雷 19760311
但通过java程序取出来之后变成如下:
name birthday
0xE982A3E99BB7 0x3139373630333131
这是什么原因造成的,如何解决?或则在java中如何把字符串如"0xE982A3E99BB7"正确
显示为"那雷";"0x3139373630333131"正确显示为"19760311"
分不多,回答者有份
多谢!
 
没人会?请帮我up!
 
5555....555555....55555555555
 
考虑字符集匹配问题
 
to 沙隆巴斯的主人:
请详细点,谢谢!
 
一般说来这种显示乱码的问题都是由于字符集不匹配造成的
你可以试一下,如果数字可以正常现实而字符不能,就基本可以断定是字符的原因了。
 
public voiddo
Post(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/xml;charset=GB2312");
..........
}
 
要注意SQL类型到JAVA类型的映射,如:
CHAR java.lang.String
DATE java.sql.Date
 
我的程序架构是
Oracle816DB(原始数据:name: 那雷 birthday: 19760311)
|(取读数据)
Application Server<--->Corba(ORB容器)<--Application Client--显示得到的数据结果也不正确(同服务器端)
|(读取得数据在Server端显示:name:0xE982A3E99BB7 birthday: 0x3139373630333131)
显示请求数据的结果显示不正确
数字类型的数据都正确,但字符串都把原始数据变成16进制字符串显示;
如果我单独写一个java类读取数据显示正常,一旦通过ORB容器corba平台就变成上面的内容;
我的Corba平台采用Orbix2000
 
用Java 的字符串来处理字符时,他会把他们当作Unicode的形式来处理
,
你的字符就是显示的Unicode值
 
Java 语言默认的编码方式是UNICODE ,而我们中国人通常使用的文件和数据库都是基于
GB2312 或者 BIG5 等方式编码的。
比如字符串对象S1输出是乱码,则可以用以下代码予以解决:
String s1 = request.getParameter(“keyword”);
String s2 = new String(s1.getBytes(“ISO-8859-1”),”GBK”);
先试试吧!
不行发E-MAIL给我——apollo@risesun-cn.com
 
我是来混分的。
 
乱码,是不是,用二进制处理即可
 
charset=GB2312 这里charset等于什么是关键,你要看好要匹配.
 
String s1 = request.getParameter(“keyword”);
String s2 = new String(s1.getBytes(“ISO-8859-1”),”GBK”);
 
我公司在座j2ee发布的时候也遇到了这个怪问题
当时是在unix机上的
后来替换了oracle9i的驱动库就好了
不知道这个能不能帮助你[:D]
 
我从来没有遇到这样的问题, 不好意思, 我不能帮你回答了, 那我先走了。
 
是你编译时的
语境
不正确
 
解决java中文问题:
针对applet和awt:
1:)
Font f = new Font(UIResource.getString( "Default_font"),Font.PLAIN,12);
UIManager.put("Label.font",f);
UIManager.put("Label.foreground",Color.black);
UIManager.put("Button.font",f);
UIManager.put("Menu.font",f);
UIManager.put("MenuItem.font",f);
UIManager.put("List.font",f);
UIManager.put("CheckBox.font",f);
UIManager.put("RadioButton.font",f);
UIManager.put("ComboBox.font",f);
UIManager.put("TextArea.font",f);
2:)
Font f = new Font("隶书",Font.PLAIN,15);
UIManager.put("Button.font",font);
UIManager.put("ToggleButton.font",font);
UIManager.put("RadioButton.font",font);
UIManager.put("CheckBox.font",font);
UIManager.put("ColorChooser.font",font);
UIManager.put("ToggleButton.font",font);
UIManager.put("ComboBox.font",font);
UIManager.put("ComboBoxItem.font",font);
UIManager.put("InternalFrame.titleFont",font);
UIManager.put("Label.font",font);
UIManager.put("List.font",font);
UIManager.put("MenuBar.font",font);
UIManager.put("Menu.font",font);
UIManager.put("MenuItem.font",font);
UIManager.put("RadioButtonMenuItem.font",font);
UIManager.put("CheckBoxMenuItem.font",font);
UIManager.put("PopupMenu.font",font);
UIManager.put("OptionPane.font",font);
UIManager.put("Panel.font",font);
UIManager.put("ProgressBar.font",font);
UIManager.put("ScrollPane.font",font);
UIManager.put("Viewport",font);
UIManager.put("TabbedPane.font",font);
UIManager.put("TableHeader.font",font);
UIManager.put("TextField.font",font);
UIManager.put("PasswordFiled.font",font);
UIManager.put("TextArea.font",font);
UIManager.put("TextPane.font",font);
UIManager.put("EditorPane.font",font);
UIManager.put("TitledBorder.font",font);
UIManager.put("ToolBar.font",font);
UIManager.put("ToolTip.font",font);
UIManager.put("Tree.font",font);
 3:)针对jsp和servlet:
解决办法:
第一:
1:在jsp页面加入:
<%@ page contentType="text/html;
charset=gb2312" %>
2:在servlet里面:
public voiddo
Get(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;
charset=gb2312");//这是重要的
3:上面的如果在不行就用如下的方法在数据入库前进行调用:
public static String UnicodeToChinese(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}
public static String ChineseToUnicode(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("gb2312"),"ISO8859_1");
return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}
4:)解决weblogic/webshpere中文问题:
在web.xml文件中需要配置中文环境。r如下:
<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GB2312</param-value>
</context-param>

用的是TOMCAT吧??
这个和服务器有关
有很多服务器,是不要转换的



 

Similar threads

D
回复
0
查看
871
DelphiTeacher的专栏
D
D
回复
0
查看
930
DelphiTeacher的专栏
D
D
回复
0
查看
945
DelphiTeacher的专栏
D
D
回复
0
查看
777
DelphiTeacher的专栏
D
后退
顶部