我的一个程序里要从数据库读数据,接着写入到一个文件里面,写入到文件的文本是定长的,从数据库读出来的字段长度不够会用一个函数在右边补空格补全,我先是用new BufferedWriter(new FileWriter(fileName))的方法来输出到文件,结果文件中的汉字全都变成?号了,我又改换OutputStreamWriter(new FileOutputStream(fileName),"GB2312")的方式输出,汉字是出来了,但输出的文本却不是定长了,本来每一段文字是60个字符长的,但是现在就是有n个汉字就在60的基础上多n个字符。我想应该是补空格函数那里出的问题,它应该是将每个汉字当成一个字符来算了,但我想了好久都不知道怎样解决,请各位大侠帮帮忙,急,谢谢了~~~
另注,数据库是informix的,java程序所在系统的原来的编码方式是ISO-8859-1
另注,数据库是informix的,java程序所在系统的原来的编码方式是ISO-8859-1
解决方案 »
- 我在object中放了一个基本数据类型,然后我取object的type的时候。得到的是封装数据类型
- 值(引用)传递
- java Frame的产生 5秒后关闭窗口
- 第一次发帖,问个菜鸟问题
- java打包以后在另一台电脑上能打开,但是连不上数据库,十万火急,13号要交作业
- java 菜鸟来问个问题!!!
- Java字节码与公开源代码相比,可读性如何?
- 构造函数的问题
- 面试时如何介绍自己做的项目
- Runtime生成的process不进行设置destory,当进程执行结束时可以自动被destory吗?
- 发送SOAPMessage报错,请高手帮忙看看是什么原因?
- 请教个Java读取文件中的数据和按照一定格式输出的问题
String filePath = "d:\\异常总结.txt";
java.io.File f2 = new java.io.File(filePath);
try {
java.io.InputStream ios = new java.io.FileInputStream(f2);
byte[] b = new byte[3];
ios.read(b);
ios.close();
if (b[0] == -17 && b[1] == -69 && b[2] == -65){
System.out.println(f2.getName() + "编码为UTF-8");
System.out.println(readFile(filePath,"UTF-8"));
}
else{
System.out.println(f2.getName() + "可能是GBK");
System.out.println(readFile(filePath,"GBK"));
}
} catch (Exception e) {
e.printStackTrace();
}
下面是我用来补空格的程序 public static String RepairSpace(String str, int len) {
if(str == null)
str = "";
str = str.trim(); if (str.equals("")) {
while (str.length() < len) {
str = str + " ";
}
}
if (str.getBytes().length > len)
str = new String(str.getBytes(), 0, len);
}
//判断字符串的长度,因为字符串中可能含有汉字
byte[] strs = str.getBytes(); while (strs.length < len) {
String str2 = str + " ";
str = str2;
strs = str.getBytes();
}
return str;
}