当前位置: 技术问答>java相关
巨烂的JAVA及LINUX,谁有好办法,我给300分。
来源: 互联网 发布时间:2014-12-22
本文导语: 我现在在LINUX+IPLANET+ORACLE下开发JSP,IPLANET+ORACLE均在LINUX(RED HAT 6)下.我在同一个JSP中同时做如下操作: 1、从ORACLE获取数据 2、从某一文件中读入内容 如果我在WIN2000下的IPLANET下运行一切正常,但转到LINUX下,...
我现在在LINUX+IPLANET+ORACLE下开发JSP,IPLANET+ORACLE均在LINUX(RED HAT 6)下.我在同一个JSP中同时做如下操作:
1、从ORACLE获取数据
2、从某一文件中读入内容
如果我在WIN2000下的IPLANET下运行一切正常,但转到LINUX下,出现以下问题:
1、如果在JSP开头设置,从ORACLE读取的中文显示正常,单从文件中读入的内容不对
2、如果不使用charset=GBK,文件读入的东西正常,但必须在每次从ORALCE读取到中文数据后使用
new String((softInfo.softName).getBytes("GBK"),"ISO8859_1");来转换。
否则显示不正常。
我的ORACLE确省字符集是ASCII7,同时支持中文。
我现在不想在每次从ORACLE获取中文后做转换,原因有:
1、太麻烦了
2、这样的代码不能运行在2000下,调试很不方便
1、从ORACLE获取数据
2、从某一文件中读入内容
如果我在WIN2000下的IPLANET下运行一切正常,但转到LINUX下,出现以下问题:
1、如果在JSP开头设置,从ORACLE读取的中文显示正常,单从文件中读入的内容不对
2、如果不使用charset=GBK,文件读入的东西正常,但必须在每次从ORALCE读取到中文数据后使用
new String((softInfo.softName).getBytes("GBK"),"ISO8859_1");来转换。
否则显示不正常。
我的ORACLE确省字符集是ASCII7,同时支持中文。
我现在不想在每次从ORACLE获取中文后做转换,原因有:
1、太麻烦了
2、这样的代码不能运行在2000下,调试很不方便
|
linux下好象jsp输出需要"charset=iso8859_1"?
做个bean,根据操作系统输出相应的charset(win2000:gb2312/linux:iso8859_1),并且做个方法来替换new String((softInfo.softName).getBytes("GBK"),"ISO8859_1")这样的东西——就好象很多用做个void log(String)来替代System.out.println(String)一样:p
radish,您所说的问题具体的我没有遇到过,但是以前曾帮一个同时在linux和win2000两个平台下开发jsp的同事解决了出乱码的问题(做bean,或者在jsp头部根据相应操作系统设置respone)
继续关注这一话题 :)
做个bean,根据操作系统输出相应的charset(win2000:gb2312/linux:iso8859_1),并且做个方法来替换new String((softInfo.softName).getBytes("GBK"),"ISO8859_1")这样的东西——就好象很多用做个void log(String)来替代System.out.println(String)一样:p
radish,您所说的问题具体的我没有遇到过,但是以前曾帮一个同时在linux和win2000两个平台下开发jsp的同事解决了出乱码的问题(做bean,或者在jsp头部根据相应操作系统设置respone)
继续关注这一话题 :)
|
没有用过,不过给你找了些资料,希望有用
-------------------------------------------
如何在 jdbc 印出中文 ?
A. 1. 第一个方式: 以 Java Applet -> socket -> Java Application -> database 为例:
byte[] buff = new byte[512]; //buffer size 随你高兴.
Socket sock = //这里做 socket 的初始化工作 ..
ResultSet rs = //这里做 ResultSet 的初始化工作 ..
DataOutputStream dataout =
new DataOutputStream(new BufferedoutputStream(sock.getOutputStream()));
InputStream in = rs.getAsciiStream(column_index); //column_index = Column number.
for (;;) {
int size = in.read(buff);
if (size == -1) break;
dataout.write(buff, 0, size);
}
dataout.flush();
这样就能把中文送过去.
2. 第二个方法: 把第六行改成
InputStream in = Runtime.getRuntime().getLocalizedInputStream(
rs.getAsciiStream(column_index)) 试试.
-------------------------------------------
如何在 java application 读写中文文字档 ?
A. JDK1.1.x 新增的机制之一是 Character Stream, 专门用来处理 Unicode 的问题. java.io.Reader 和 java.io.Writer 便是这种 class, 范例如下;
BufferedReader br =
new BufferedReader(new InputStreamReader(
new FileInputStream("YourInputFile")));
String inputString= br.readLine();
..................
................
PrintWriter pw=
new PrintWriter(new FileOutputStream(
"YourOutputFile"));
pw.println(outputString);
..........
...........
最後请记得将 InputStream, OutputStream, PrintWriter 的物件 close 掉
-------------------------------------------
头疼的汉字处理问题。
在其他的文章里曾说到在中文NT环境下如下语句输出会得到乱码,
及 out.print("你好");等。解决方法是只要对字符串变量进行编码就可以得到正确结果,如下代码可以得到正确的输出:
或者
关于sql语句汉字问题,例句为 select * from test where title='谁是傻瓜'
在jdbc-odbc驱动下连db2,不管是原句还是对sql语句进行编码后都死活通不过。
换了ibm的jdbc直接驱动后,对sql语句编码后程序可以通过。
这个问题的产生大概是中文NT的原因,在其他环境下可能就没汉字处理问题了,据说ibm的web sphere对中文支持的很好,这也给jsp的开发带来一定的通用性问题。据说对字符串编码是一种通用的解决方法,不过没有这么多环境来测试。
-------------------------------------------
如何在 jdbc 印出中文 ?
A. 1. 第一个方式: 以 Java Applet -> socket -> Java Application -> database 为例:
byte[] buff = new byte[512]; //buffer size 随你高兴.
Socket sock = //这里做 socket 的初始化工作 ..
ResultSet rs = //这里做 ResultSet 的初始化工作 ..
DataOutputStream dataout =
new DataOutputStream(new BufferedoutputStream(sock.getOutputStream()));
InputStream in = rs.getAsciiStream(column_index); //column_index = Column number.
for (;;) {
int size = in.read(buff);
if (size == -1) break;
dataout.write(buff, 0, size);
}
dataout.flush();
这样就能把中文送过去.
2. 第二个方法: 把第六行改成
InputStream in = Runtime.getRuntime().getLocalizedInputStream(
rs.getAsciiStream(column_index)) 试试.
-------------------------------------------
如何在 java application 读写中文文字档 ?
A. JDK1.1.x 新增的机制之一是 Character Stream, 专门用来处理 Unicode 的问题. java.io.Reader 和 java.io.Writer 便是这种 class, 范例如下;
BufferedReader br =
new BufferedReader(new InputStreamReader(
new FileInputStream("YourInputFile")));
String inputString= br.readLine();
..................
................
PrintWriter pw=
new PrintWriter(new FileOutputStream(
"YourOutputFile"));
pw.println(outputString);
..........
...........
最後请记得将 InputStream, OutputStream, PrintWriter 的物件 close 掉
-------------------------------------------
头疼的汉字处理问题。
在其他的文章里曾说到在中文NT环境下如下语句输出会得到乱码,
及 out.print("你好");等。解决方法是只要对字符串变量进行编码就可以得到正确结果,如下代码可以得到正确的输出:
或者
关于sql语句汉字问题,例句为 select * from test where title='谁是傻瓜'
在jdbc-odbc驱动下连db2,不管是原句还是对sql语句进行编码后都死活通不过。
换了ibm的jdbc直接驱动后,对sql语句编码后程序可以通过。
这个问题的产生大概是中文NT的原因,在其他环境下可能就没汉字处理问题了,据说ibm的web sphere对中文支持的很好,这也给jsp的开发带来一定的通用性问题。据说对字符串编码是一种通用的解决方法,不过没有这么多环境来测试。