数据库是utf-8编码的。检索的结果直接在后台就放入inputstream中,但是出现了乱码。其中的代码如下:endUserTrackList = endUserTrackManager.searchForList(endUserTrackDto);//从数据库检索StringBuffer a = new StringBuffer("");
if (endUserTrackList != null && endUserTrackList.size() > 0) {
for (EndUserTrack eut : endUserTrackList) {
a.append(eut.getOrder_code() + " ").append(",");
a.append(eut.getOrder_amount()).append(",");
//a.append(eut.getEnd_user_name()).append(",");
a.append(new String(eut.getEnd_user_name().getBytes(), "utf-8")).append(",");
a.append(df.format(eut.getCreate_date())).append(",");
a.append(getOrderStatusStr(eut.getOrder_status())).append("\n");
}
}
inputStream = new ByteArrayInputStream(a.toString().getBytes());上面的代码在客户端打开就出现乱码
if (endUserTrackList != null && endUserTrackList.size() > 0) {
for (EndUserTrack eut : endUserTrackList) {
a.append(eut.getOrder_code() + " ").append(",");
a.append(eut.getOrder_amount()).append(",");
//a.append(eut.getEnd_user_name()).append(",");
a.append(new String(eut.getEnd_user_name().getBytes(), "utf-8")).append(",");
a.append(df.format(eut.getCreate_date())).append(",");
a.append(getOrderStatusStr(eut.getOrder_status())).append("\n");
}
}
inputStream = new ByteArrayInputStream(a.toString().getBytes());上面的代码在客户端打开就出现乱码
因为Reader是按字符读,而InputStream是按字节读。
在java中内部编码都是unicode,不论是中文,英文,数字还是其它都是一个字符。
bufferReader = new bufferReader(inputStream(),"UTF-8")