黑马程序员技术交流社区
标题:
怎样用字节流读取中文字符
[打印本页]
作者:
breeze
时间:
2013-5-19 10:00
标题:
怎样用字节流读取中文字符
本帖最后由 breeze 于 2013-5-20 22:48 编辑
现在有这样一个字符串"1. abc你好中文deflljj你好Java" 如何能通过字节流将每个字符都输出到控制台上, 因为每个中文都占用两个字节, 如果一个一个读取肯定会乱码, 请高手指点下
作者:
刘治广
时间:
2013-5-19 10:31
每个中文都占用两个字节, 如果一个一个读取肯定会乱码, 不是乱码而是会出现半个汉字这个现象。给你我的代码你看一下吧
public class Test10 {
public static void main(String[] args) throws Exception{
String str = "我爱kfc并且喜欢dota";
int num = trimGBK(str.getBytes("GBK"),8);//将字符串使用“GBK”编码,并定义截取长度
System.out.println(str.substring(0,num) );//打印输出
}
public static int trimGBK(byte[] buf,int n){ //定义方法
int num = 0;
boolean bChineseFirstHalf = false; //如果是一半汉字就返回false
for(int i=0;i<n;i++)
{
if(buf[i]<0 && !bChineseFirstHalf){ //判断是否是汉字
bChineseFirstHalf = true;
}else{
num++;
bChineseFirstHalf = false;
}
}
return num;
}
}
作者:
何俊森
时间:
2013-5-19 13:30
转化为字符串的形式,然后在输出。
作者:
张金铎
时间:
2013-5-19 16:14
本帖最后由 张金铎 于 2013-5-19 16:23 编辑
可以通过转换流吧,然后用BufferedWriter()输出。
public static void main(String[] args) throws IOException {
String s = "我是abc";
OutputStream out = System.out;
OutputStreamWriter osw = new OutputStreamWriter(out);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(s);
bw.newLine();
bw.flush();
bw.close();
}
复制代码
作者:
曹睿翔
时间:
2013-5-20 12:29
貌似问题解决了
要是解决及时更改问题状态,重新编辑为已解决
否则继续追问
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2