最近发现读取中文是没有问题的,但写入dbf的时候就会产生乱码。
设了几个断点之后跟踪发现是Utils中的textPadding方法有错,原来的方法是
public static byte[] textPadding( String text, String characterSetName, int length, int alignment, byte paddingByte) throws java.io.UnsupportedEncodingException { if( text.length() >= length) { return text.substring( 0, length).getBytes( characterSetName); } byte byte_array[] = new byte[ length]; Arrays.fill( byte_array, paddingByte); switch( alignment) { case ALIGN_LEFT: System.arraycopy( text.getBytes( characterSetName), 0, byte_array, 0, text.length()); break; case ALIGN_RIGHT: int t_offset = length - text.length(); System.arraycopy( text.getBytes( characterSetName), 0, byte_array, t_offset, text.length()); break; } return byte_array; }
我改为了
public static byte[] textPadding(String text,String characterSetName, int length,int alignment,byte paddingByte) throws java.io.UnsupportedEncodingException { byte[] srcByteArray=text.getBytes(characterSetName); byte[] dstByteArray=new byte[length]; Arrays.fill(dstByteArray,paddingByte); int dstLength=0; if(srcByteArray.length>=length) { dstLength=length%2==0?length:length-1; }else { dstLength=srcByteArray.length; } switch(alignment) { case ALIGN_LEFT: System.arraycopy(srcByteArray,0,dstByteArray,0,dstLength); break; case ALIGN_RIGHT: System.arraycopy(srcByteArray,0,dstByteArray,length-dstLength,dstLength); break; } return dstByteArray; }
中文输出完全正常了。
附件是打过补丁后的javadbf.jar。
相关推荐
使用Javadbf时解决DBF中文写入乱码问题,用此javadbf-0.4.0.jar代替官方原jar文件即可解决
javadbf解决中文截取
基于javadbf-0.4.0修改而来,a.修改了基类中的默认字符编码;b.修改了写入类中的字节填充位置计算方法,使之支持双字节; 补充:通常dbf使用excel打开时,gb2312的中文能正常显示,utf8的不行,所以默认字符集设置成...
用于在java代码中写入dbf文件并输出文件。在原代码的使用过程中,对于姓名字段中不常见的汉字,会变成“?”号,比如“张芃”,会变成“张?”,这个包是修复这个问题的。
javadbf, 解决dbf中 ,中文乱码的问题。。。。。。。。。。。。。
在标题和描述中提到的问题,主要是关于在使用javadbf处理中文数据时遇到的乱码问题以及如何解决这个问题。中文乱码通常发生在字符编码不匹配的情况下,例如当文件以一种编码存储,但程序试图以另一种不同的编码读取...
原始的javadbf.jar可能存在读取DBF文件时编码转换不准确的问题,导致中文或者其他非ASCII字符显示为乱码。开发者通过识别并修复了这个问题,使得新的javadbf.jar能够正确地处理包含非ASCII字符的数据和表头,提高了...
DBF的ODBC建立方法: X86server,进入 控制面板--系统和安全--管理工具--ODBC数据源--右键管理员方式运行 X64(win7,server):C:\windows\sysWow64\odbcad32.exe 右键管理员方式运行,如图1 在"系统DSN"中找到刚...
基于javadbf-0.4.0而修改的,导入dbf文件时标题转码采用系统默认编码处改为采用用户自定义的转码格式,从而解决标题乱码的问题
javadbf-0.4.0版本本已增加setCharactersetName方法支持中文读写,但在写入时会发生写入中文数据丢失问题。资源压缩文件包含有修改后的jar文件和读写测试类。 @Test public void testWrite1(){ File file=new File...
在读取 DBF 文件时,需要注意中文编码问题,可以使用以下方法来解决中文编码问题: ```java private String getStrByCharToByte(String str) { byte[] temp = new byte[str.length()]; for (int i = 0; i (); i++...
此前下载了官方的javadbf-0[1].4.0.jar使用过程中出现中文乱码.经过本人修改后已经解决次问题
总之,解决DBF文件的中文乱码问题,关键在于识别原始文件的编码,并在读取或处理时保持一致。此外,了解和利用各种编程语言及工具提供的功能也是很重要的。在实际操作中,务必注意备份原始数据,以防处理不当导致...
使用Javadbf时解决DBF中文写入乱码问题,用此javadbf-0.4.0.jar代替官方原jar文件即可解决; 使用Javadbf时解决DBF中文写入乱码问题,用此javadbf-0.4.0.jar代替官方原jar文件即可解决;
请审核人员注意,这不是重复上传,上一个版本存在bug,有人联系我之后再次修订上传,解决保存中文数据会丢失部分的问题, 默认编码UTF-8,如果有使用其它编码的,可以调用writer的设置编码的方法 writer....
这个文档对于初学者尤其有用,因为它会解释API的基本用法,以及如何避免或解决可能出现的问题,比如中文乱码。 总的来说,这个压缩包提供了一个完整的解决方案,包括了用于Java操作DBF文件的库、源码以及学习材料。...
java输出dbf所需包,最新版,解决内容中包含中文导致结果只有一半字符的问题,输出dbf文件主要是为了设置打开shp文件的时候对应字段的长度和精度设置