int ch;
StringBuffer buf=new StringBuffer();
TelnetInputStream t = ftp.list(); //读取服务器端的文件
while((ch=t.read())>0){ //文件没有读完则进入while循环
if(ch=='\n'){ //遇到换行打印buf中的内容
System.out.println(buf.toString());
buf.setLength(0); //重新设置buf中的内容
}
else{
buf.append((char)ch); //将读取到的整型数据转换成char型
}
}
t.close();现在有一个问题,就是打印出来的数据遇到中文就有问题,会显示乱码。我估计是在buf.append((char)ch); 中出了问题,因为中文占两个字节,而我是讲一个个的char加入到buf中。
请问应该怎么解决这个问题啊!! 谢谢了。
StringBuffer buf=new StringBuffer();
TelnetInputStream t = ftp.list(); //读取服务器端的文件
while((ch=t.read())>0){ //文件没有读完则进入while循环
if(ch=='\n'){ //遇到换行打印buf中的内容
System.out.println(buf.toString());
buf.setLength(0); //重新设置buf中的内容
}
else{
buf.append((char)ch); //将读取到的整型数据转换成char型
}
}
t.close();现在有一个问题,就是打印出来的数据遇到中文就有问题,会显示乱码。我估计是在buf.append((char)ch); 中出了问题,因为中文占两个字节,而我是讲一个个的char加入到buf中。
请问应该怎么解决这个问题啊!! 谢谢了。
解决方案 »
- 抽象类的作用
- 有用过swt的么?我装了图形插件,但是已有项目没有图形界面,怎么解决?
- java 多线程共享的问题
- 以前学习时遇到的,很简单的一个问题,希望大家指教一下
- tomcat5.5.9+j2sdk1.5.0的配置问题
- 接口的实现里为什么要用接口来定义
- 数据库不支持BigDecimal类型怎么处理
- *********************寻求好的解决方法?*******************
- 那位大虾用过ldap开发用户管理?请赐教一二!!
- 关于UIManager的get、put
- log4j写数据库问题
- "水与争锋"兄弟,请进来解答问题,顺便接分。谢谢了,还是有关字符集与编码的问题,对你是小菜一碟的问题
可以考虑先存入byte数组里面,再转回字符串
然后:byte b[]=astr.getBytes("ISO-8859-1");
astr=new String(b);
然后再System.out.println(astr);
试试看,行不行?
.........
2)使用Reader,同样指定编码集,char by char,一个中文字符对应一个char.
ps:楼主出现的问题不是因为char与中文字符字长不等的问题,而是由于读取char的时候是根据编码走的,所以错误的编码读出来的就是错误的字符了.
try {
in = new BufferedReader(new InputStreamReader(ftp.list()/**, 如果必须,可以加上编码 */));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ex) {
}
} }
读入的是字节,StringBuffer处理的是字符呀