从Html文件中读取的中文字符都是问号????,高手进来指教(急,在线等)

zqgem 2003-05-25 10:48:51
源程序如下:
import java.io.*;

public class IODemo{
public static void main(String[] args) throws IOException{
BufferedReader in=new BufferedReader(new FileReader("page1.htm"));
String s,s2=new String();
char c;
while((s=in.readLine())!=null)
s2+=s+"\n";
in.close();
try{
DataInputStream in2=new DataInputStream(new ByteArrayInputStream(s2.getBytes()));
while(true){
c=(char)in2.readByte();
System.out.print(c);
}
}
catch(EOFException e){
System.err.println("End of stream");
}
}
}
这样输出的中文字符全是问号,高手救救我啊
...全文
729 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
helpall 2003-05-26
  • 打赏
  • 举报
回复
for(int i = 0; i < s2.length();i++) {
System.out.print(s2.charAt(i)+"--");
}
这样就能得到一个一个"正确"的char.
seven1996 2003-05-25
  • 打赏
  • 举报
回复
给他们留言啊
你找到有他们回答的帖子
直接没他们留言
zqgem 2003-05-25
  • 打赏
  • 举报
回复
我不能在其他机器上运行的啊
我的程序是要在2000 server上连接到数据库上运行的
怎么办?
怎么找他们两个啊?
seven1996 2003-05-25
  • 打赏
  • 举报
回复
狂晕!!
对了
我记得好象机器的编码也能产生这个问题
你在另外一台机子上试试

另外你去找helpall和beyond_xiruo(又再次无奈的离开) 看看
给他们留言
他们都是NB
zqgem 2003-05-25
  • 打赏
  • 举报
回复
还是不行啊
seven1996(小七) 、jxboy(风寂无声) 按你们说的改都不行啊
以前的帖子我也找过
上面说的都行不通啊
出来汉字的还是????
怎么办?
Hodex 2003-05-25
  • 打赏
  • 举报
回复
String(sourceStr.getBytes("ISO8859-1"),"gdk");

jxboy 2003-05-25
  • 打赏
  • 举报
回复
String str=new String(sourceStr.getBytes("gbk"),"ISO8859-1");

其中GBK表示你所存字符时的charset即字符集,"ISO8859-1"表示你现在用的字符集,即你的HTML页面所用的字符集
seven1996 2003-05-25
  • 打赏
  • 举报
回复
DataInputStream in2=new DataInputStream(new ByteArrayInputStream(s2.getBytes("iso-8859-1")));
或者DataInputStream in2=new DataInputStream(new ByteArrayInputStream(s2.getBytes( "gb2312" ), "ISO8859-1"));
chinage 2003-05-25
  • 打赏
  • 举报
回复
对,中文处理好多帖子都有,你查找一下吧!
seven1996 2003-05-25
  • 打赏
  • 举报
回复
应该是字符集转换的问题
zqgem 2003-05-25
  • 打赏
  • 举报
回复
谢谢两位高人
这只是我的一个例程
我要做的不是要把它打印出来
我要做的是分析一个html文件
里面有英文字符也有中文字符
我是从C/C++转过来的
C/C++中这样一个个char读写的话
中文字符也是正常的,但是在java中就行不通
不用char一个个分析的话
请问还有什么好的办法?

回helpall() ,我用type a.txt是可以正常显示中文的
回beyond_xiruo(又再次无奈的离开) ,java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(bais,"GBK"));
这个方法我试过,但是还是不行
问题该怎样解决?
希偌 2003-05-25
  • 打赏
  • 举报
回复
确实,打印中文不用char,下面是另一种方法
BufferedReader in=new BufferedReader(new FileReader("page1.htm"));
String s,s2=new String();
char c;
while((s=in.readLine())!=null)
s2+=s+"\n";
in.close();
ByteArrayInputStream bais=new ByteArrayInputStream(s2.getBytes());//假如你一定要用这个类的话
java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(bais,"GBK"));
while((s=reader.readLine())!=null){
System.out.println(s);
}
helpall 2003-05-25
  • 打赏
  • 举报
回复
收到留言. 讲讲我的看法.
1. 读HTML与读TXT文件是没有区别的.
2. 准备一个文本文件,让它包含中文,且称做a.txt.
3. 在DOS窗口中,用"type a.txt",如果看不到中文的话,则是你的系统有问题了,与JAVA无关.
4. 在你的第一段读完后打印出来S2是什么,如果有中文,告诉我下面你想干什么.

一个中文由两个char组成,你这样把char一个一个打出来,肯定是显示不出中文的.
希偌 2003-05-25
  • 打赏
  • 举报
回复
不知道你为什么要getBytes,直接
BufferedReader in = new BufferedReader(new FileReader("page1.htm"));
String s, s2 = new String();
while ((s = in.readLine()) != null)
s2 += s + "\n";
in.close();
System.out.print(s2);
就可以得到中文啦

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧