`
ivan
  • 浏览: 181128 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javadbf中文问题的解决

    博客分类:
  • java
阅读更多
前面shuyanxu朋友提到javadbf(http://fireshort.blogbus.com/logs/2005/09/1420670.html
)的中文支持问题,由于我测试得不够仔细就忽略掉了。最近发现读取中文是没有问题的,但写入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。
7
2
分享到:
评论
5 楼 mengqingyu 2013-03-07  
列头乱码咋解决?
4 楼 tianlihu 2013-01-04  
问题解决,谢谢
3 楼 giianhui 2012-12-11  
luo2pei4321 写道
在读取文件时还是会出现乱码。

reader.setCharactersetName("GB2312");
2 楼 luo2pei4321 2012-11-15  
在读取文件时还是会出现乱码。
1 楼 hannaje 2010-04-06  
 
困扰我很久了……

相关推荐

    Javadbf时解决DBF中文写入乱码问题javadbf-0.4.0.jar

    使用Javadbf时解决DBF中文写入乱码问题,用此javadbf-0.4.0.jar代替官方原jar文件即可解决

    javadbf解决中文截取

    javadbf解决中文截取

    javadbf 标题内容中文乱码解决

    基于javadbf-0.4.0修改而来,a.修改了基类中的默认字符编码;b.修改了写入类中的字节填充位置计算方法,使之支持双字节; 补充:通常dbf使用excel打开时,gb2312的中文能正常显示,utf8的不行,所以默认字符集设置成...

    javadbf.jar-修复中文乱码-部分生僻字显示成问号的问题

    用于在java代码中写入dbf文件并输出文件。在原代码的使用过程中,对于姓名字段中不常见的汉字,会变成“?”号,比如“张芃”,会变成“张?”,这个包是修复这个问题的。

    javadbf中文乱码

    javadbf, 解决dbf中 ,中文乱码的问题。。。。。。。。。。。。。

    javadbf-0.4.0,中文乱码解决及测试中文输出代码

    在标题和描述中提到的问题,主要是关于在使用javadbf处理中文数据时遇到的乱码问题以及如何解决这个问题。中文乱码通常发生在字符编码不匹配的情况下,例如当文件以一种编码存储,但程序试图以另一种不同的编码读取...

    解决了DBF数据和表头乱码的javadbf.jar

    原始的javadbf.jar可能存在读取DBF文件时编码转换不准确的问题,导致中文或者其他非ASCII字符显示为乱码。开发者通过识别并修复了这个问题,使得新的javadbf.jar能够正确地处理包含非ASCII字符的数据和表头,提高了...

    java读取DBF解决方案(可以解决javadbf.jar对DBF部分中文乱码和错行等杂症)

    DBF的ODBC建立方法: X86server,进入 控制面板--系统和安全--管理工具--ODBC数据源--右键管理员方式运行 X64(win7,server):C:\windows\sysWow64\odbcad32.exe 右键管理员方式运行,如图1 在"系统DSN"中找到刚...

    javadbf 标题中文乱码处理

    基于javadbf-0.4.0而修改的,导入dbf文件时标题转码采用系统默认编码处改为采用用户自定义的转码格式,从而解决标题乱码的问题

    基于javadbf-0.4.0版本修改支持中文读写

    javadbf-0.4.0版本本已增加setCharactersetName方法支持中文读写,但在写入时会发生写入中文数据丢失问题。资源压缩文件包含有修改后的jar文件和读写测试类。 @Test public void testWrite1(){ File file=new File...

    java解析dbf文件方案.pdf

    在读取 DBF 文件时,需要注意中文编码问题,可以使用以下方法来解决中文编码问题: ```java private String getStrByCharToByte(String str) { byte[] temp = new byte[str.length()]; for (int i = 0; i (); i++...

    java创建DBF文件官方jar修订版(修正中文乱码问题)

    此前下载了官方的javadbf-0[1].4.0.jar使用过程中出现中文乱码.经过本人修改后已经解决次问题

    dbf解决中文乱码

    总之,解决DBF文件的中文乱码问题,关键在于识别原始文件的编码,并在读取或处理时保持一致。此外,了解和利用各种编程语言及工具提供的功能也是很重要的。在实际操作中,务必注意备份原始数据,以防处理不当导致...

    JAVA、DBF、导入、导出、源码、源码修改

    使用Javadbf时解决DBF中文写入乱码问题,用此javadbf-0.4.0.jar代替官方原jar文件即可解决; 使用Javadbf时解决DBF中文写入乱码问题,用此javadbf-0.4.0.jar代替官方原jar文件即可解决;

    java创建DBF文件官方jar修订版(修正插入中文丢失数据)

    请审核人员注意,这不是重复上传,上一个版本存在bug,有人联系我之后再次修订上传,解决保存中文数据会丢失部分的问题, 默认编码UTF-8,如果有使用其它编码的,可以调用writer的设置编码的方法 writer....

    java操作dbf文件jar包(源码+说明)

    这个文档对于初学者尤其有用,因为它会解释API的基本用法,以及如何避免或解决可能出现的问题,比如中文乱码。 总的来说,这个压缩包提供了一个完整的解决方案,包括了用于Java操作DBF文件的库、源码以及学习材料。...

    java输出dbf所需包,最新版

    java输出dbf所需包,最新版,解决内容中包含中文导致结果只有一半字符的问题,输出dbf文件主要是为了设置打开shp文件的时候对应字段的长度和精度设置

Global site tag (gtag.js) - Google Analytics