单个字节接收时的乱码问题

mnlsdyl 2004-06-22 09:18:23
byte[] a= new byte[1];
do{
ch = in.read(); //读出来是iso8859
if (ch < 0) {
return;
}
String aa = new String((byte)ch,"gbk");
System.out.print(aa);
System.out.flush();
}
}while(true)

结果输出出来正常汉字和乱码穿插,请问高手怎么解决??谢谢!!

...全文
146 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tylty 2004-06-28
  • 打赏
  • 举报
回复
打错了...ByteArrayOutputPrintStream
tylty 2004-06-28
  • 打赏
  • 举报
回复
用PrintStream与BrraryOutpurPrintStream试试...
同桌老王 2004-06-28
  • 打赏
  • 举报
回复

public static void main(String[] args) {

byte[] a= new byte[2];
int j=0;
int ch = 0;
do{
try
{
ch = System.in.read(); //读出来是iso8859
}
catch(IOException e)
{
};
if (ch < 0)
{
return;
}
a[j]=(byte)ch;
j++;
if(j==2)
{
j=0;
try{
String aa = new String(a,"gbk");
System.out.print(aa);
System.out.flush();
}catch(UnsupportedEncodingException e)
{
}
}
}while(true);

}
}
这样的code,你在命令行上输入汉字什么的,一点问题也没有。
allenhe 2004-06-28
  • 打赏
  • 举报
回复
用byte[]数组转
不是用byte
mnlsdyl 2004-06-28
  • 打赏
  • 举报
回复
因为字节就是一个一个的产生的,
我只能一个一个的接收呀,好像不能一行一行的读
oswicer 2004-06-23
  • 打赏
  • 举报
回复
如果只是文本文件,用Reader读不就行了,干嘛自己处理那么复杂
java.io.BufferedReader

readLine()
YunTan 2004-06-23
  • 打赏
  • 举报
回复
用iostream包装一下吧。
mnlsdyl 2004-06-23
  • 打赏
  • 举报
回复
高8位和低8位应该没有反呀,因为我读出的英文字符和数字都是很对的啦
guojiafuzhuxi 2004-06-22
  • 打赏
  • 举报
回复
顶....看楼主这样急..学习中
mnlsdyl 2004-06-22
  • 打赏
  • 举报
回复
高手解决一下,小弟万急
mnlsdyl 2004-06-22
  • 打赏
  • 举报
回复
byte[] a= new byte[2];
j=0;
do{
ch = in.read(); //读出来是iso8859
if (ch < 0) {
return;
}
a[j]=(byte)ch;
j++;
if(j==2){
j=0
String aa = new String(a,"gbk");
System.out.print(aa);
System.out.flush();
}
}
}while(true)

改成双字节也不行,也是正常乱码和汉字穿插
haitangli2 2004-06-22
  • 打赏
  • 举报
回复
java讲究的是双字节
你单字节当然挂
hooku 2004-06-22
  • 打赏
  • 举报
回复
找那本Java I/O看看。我这儿有英文的电子版。
shine333 2004-06-22
  • 打赏
  • 举报
回复
单字节?
传的时候,高8位和低8位顺序反了????

以前在哪个api里面看到过,读写时高低8位的顺序问题,一时想不起来了

62,623

社区成员

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

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