生僻字乱码问题

shenyangong123 2015-03-20 04:47:01
我先把数据从数据库中查出来,然后输出到EXCEL表格中,但是表格中显示的是乱码.
数据库中的数据是正常的,没有问题,程序有个查询功能,一个导出功能,查询功能是调用润乾展示报表,没有乱码.
但是生成导出任务的时候,就导出的生僻字就是乱码.
我试图在代码中直接将乱码输出到日志中,发现服务器上日志中的生僻字变成乱码了.
尝试了很多转换方式都不好用,因为是从数据中读取数据,用过滤器是不是也不行?这个没试,不会写过滤器.
请各位大神帮帮我.如果解决了,可以加分~拜托了
public void createExcel(String resultFileName ,Map paramMap,String sql1, String sql2, String titles) throws DataAccessException {
String path = "/opt/webapps/reporttask/bin/tempFolder/";
String timeStr = DateUtil.getFormatDateTime(Calendar.getInstance(),BatchConstants.DATE_FORMAT);

String sql = sql1;
if(sql2 != null) {
sql = sql+sql2;
}

String element = (String)paramMap.get("element");
int num = Integer.parseInt((String)paramMap.get("num"));
String title = titles;
String reportName = (String)paramMap.get("reportName");

ArrayList elementArray = strToArray(element) ;

Connection conn = null;
PreparedStatement pstmt = null ;
ResultSet rest = null ;
BufferedWriter bw = null;

try{
File dirFile;
boolean bFile = false;
dirFile = new File(path+timeStr);
bFile = dirFile.exists();
if( bFile == false )
{
bFile = dirFile.mkdir();
}

bw = new BufferedWriter(new FileWriter(path+timeStr+"/"+resultFileName));

bw.write(reportName);

bw.newLine();

bw.write(title);

bw.newLine();


conn = getConnection();

pstmt = conn.prepareStatement(sql);
for(int i = 1 ; i <= elementArray.size() ; i++)
{
pstmt.setString(i, ((String)elementArray.get(i-1)).trim()) ;
}
rest = pstmt.executeQuery();

while (rest.next()) {
for(int i=1; i< num; i++)
{
//System.out.println(rest.getString(i).getBytes("ISO-8859-1")+"rrrrrrrrrrrr");
Properties pro=System.getProperties();
pro.getProperty("file.encoding");
String a="垚";
a = new String(a.getBytes("GBK"),"GBK");
//System.out.println("GGGGGGGGGGG");
System.out.println(a);
String bb="沈";
System.out.println(bb);
String b="";
b= new String(nvl(rest.getString(i)));
// if (!rest.getString(i).equals("")){
// b= new String(nvl(rest.getString(i)).getBytes("gbk"),"gbk");}
//
try{
InputStream im= rest.getAsciiStream(i);
BufferedReader bf=new BufferedReader(new InputStreamReader(im,"iso-8859-1"));
String bfStr=bf.readLine();

System.out.println("bf=="+new String(bfStr.getBytes(),"gbk"));
System.out.println("b=="+b);
}catch(Exception e){

}
//}
bw.write(nvl(rest.getString(i)).replaceAll(",",",").replaceAll("\"", "")+",");
}
bw.write(nvl(rest.getString(num)).replaceAll(",",",").replaceAll("\"", ""));
bw.newLine();
}

bw.flush();
bw.close();
bw = null;
ZipBuilder zip = new ZipBuilder();
//设置需要演说的文件路径
zip.setSysPath(path+timeStr);
zip.createZipFile(resultFileName.replaceAll(".csv", ".zip"), resultFileName);
...全文
200 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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