javadbf写入dbf文件的问题
悬赏:15 发布时间:2008-05-14 提问人:sunny88 (初级程序员)
我使用文档中的测试用例写入dbf文件:
package expdbf;
import com.linuxense.javadbf.*;
import java.io.*;
public class DBFWriterTest {
public static void main( String args[])
throws DBFException, IOException {
// let us create field definitions first
// we will go for 3 fields
//
DBFField fields[] = new DBFField[ 3];
fields[0] = new DBFField();
fields[0].setName( "emp_code");
fields[0].setDataType( DBFField.FIELD_TYPE_C);
fields[0].setFieldLength( 10);
fields[1] = new DBFField();
fields[1].setName( "emp_name");
fields[1].setDataType( DBFField.FIELD_TYPE_C);
fields[1].setFieldLength(20);
fields[2] = new DBFField();
fields[2].setName( "salary");
fields[2].setDataType( DBFField.FIELD_TYPE_N);
fields[2].setFieldLength( 12);
fields[2].setDecimalCount( 2);
DBFWriter writer = new DBFWriter();
writer.setCharactersetName("GBK");
writer.setFields( fields);
// now populate DBFWriter
//
Object rowData[] = new Object[3];
rowData[0] = "1000";
rowData[1] = "一二三四五六";
rowData[2] = new Double( 5000.00);
writer.addRecord( rowData);
rowData = new Object[3];
rowData[0] = "1001";
rowData[1] = "一二三四五六";
rowData[2] = new Double( 3400.00);
writer.addRecord( rowData);
rowData = new Object[3];
rowData[0] = "1002";
rowData[1] = "一二三四五六";
rowData[2] = new Double( 7350.00);
writer.addRecord( rowData);
FileOutputStream fos = new FileOutputStream("E:\\testdbf.dbf");
writer.write( fos);
fos.close();
}
}
开始时运行查看dbf文件,里面的中文都是乱码。后来加入了writer.setCharactersetName("GBK")后中文倒是正常显示了,但是文字都被截断了。"一二三四五六"在dbf文件中都只写入了"一二三"。
请大家帮帮忙,这个怎么样解决啊?
该问题已经关闭: 问题已经解决了。 需将Utils中的textPadding方法改为: public static byte[] textPadding(String text,String characterSetName, int length,int alignment,byte paddingByte) throws java.io.UnsupportedEncodingException { byte[] srcByte
package expdbf;
import com.linuxense.javadbf.*;
import java.io.*;
public class DBFWriterTest {
public static void main( String args[])
throws DBFException, IOException {
// let us create field definitions first
// we will go for 3 fields
//
DBFField fields[] = new DBFField[ 3];
fields[0] = new DBFField();
fields[0].setName( "emp_code");
fields[0].setDataType( DBFField.FIELD_TYPE_C);
fields[0].setFieldLength( 10);
fields[1] = new DBFField();
fields[1].setName( "emp_name");
fields[1].setDataType( DBFField.FIELD_TYPE_C);
fields[1].setFieldLength(20);
fields[2] = new DBFField();
fields[2].setName( "salary");
fields[2].setDataType( DBFField.FIELD_TYPE_N);
fields[2].setFieldLength( 12);
fields[2].setDecimalCount( 2);
DBFWriter writer = new DBFWriter();
writer.setCharactersetName("GBK");
writer.setFields( fields);
// now populate DBFWriter
//
Object rowData[] = new Object[3];
rowData[0] = "1000";
rowData[1] = "一二三四五六";
rowData[2] = new Double( 5000.00);
writer.addRecord( rowData);
rowData = new Object[3];
rowData[0] = "1001";
rowData[1] = "一二三四五六";
rowData[2] = new Double( 3400.00);
writer.addRecord( rowData);
rowData = new Object[3];
rowData[0] = "1002";
rowData[1] = "一二三四五六";
rowData[2] = new Double( 7350.00);
writer.addRecord( rowData);
FileOutputStream fos = new FileOutputStream("E:\\testdbf.dbf");
writer.write( fos);
fos.close();
}
}
开始时运行查看dbf文件,里面的中文都是乱码。后来加入了writer.setCharactersetName("GBK")后中文倒是正常显示了,但是文字都被截断了。"一二三四五六"在dbf文件中都只写入了"一二三"。
请大家帮帮忙,这个怎么样解决啊?
该问题已经关闭: 问题已经解决了。 需将Utils中的textPadding方法改为: public static byte[] textPadding(String text,String characterSetName, int length,int alignment,byte paddingByte) throws java.io.UnsupportedEncodingException { byte[] srcByte
已解决问题数: 542
待解决问题数: 278
已关闭问题数: 1065
待解决问题数: 278
已关闭问题数: 1065
问答分类
答题高手
- ham 资深程序员 ( 50 - 685 )
- lggege 资深程序员 ( 50 - 636 )
- congjl2002 资深程序员 ( 44 - 627 )
- llade 高级程序员 ( 34 - 594 )
- hjgundam 高级程序员 ( 30 - 442 )
- wangxin0072000 高级程序员 ( 28 - 436 )
- jasongreen 高级程序员 ( 26 - 528 )
- 温柔一刀 高级程序员 ( 23 - 336 )
- kyo100900 中级程序员 ( 11 - 209 )
- mewleo 中级程序员 ( 11 - 242 )




