`
java-mans
  • 浏览: 11413461 次
文章分类
社区版块
存档分类
最新评论

castor Unmarshaller 汉字编码问题

 
阅读更多

castor Unmarshaller 在AIX机器上,怎么弄都不对

后来使用InputSource()包一下就好了,真是奇怪,如果只用FileReader,则总会有编码问题,使用InputStreamReader 指定编码也不好使。

TaskInfo taskInfo = (TaskInfo) unmarshaller.unmarshal(is);

TestCase.java

package com.utan.bean;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Iterator;
import java.util.Vector;

import org.exolab.castor.mapping.Mapping;
import org.exolab.castor.xml.Unmarshaller;
import org.xml.sax.InputSource;

import com.utan.exchange.config.ExMapping;
import com.utan.exchange.config.MappingItem;

public class TestCase {

	/**
	 * 获得输入源
	 * @param transFile
	 * @return
	 */
	public InputSource getTransFileReader(String transFile)
			throws FileNotFoundException {
		InputSource is = null;
		is = new InputSource(new FileReader(transFile));
		return is;
	}
	
	
	/**
	 * 测试一
	 *
	 */
	public void test1(){
		try {
			InputSource is = getTransFileReader("test.xml");		
			
			Mapping map = new Mapping();
			map.loadMapping(this.getClass().getResource("mapping.xml"));
			Unmarshaller unmarshaller = new Unmarshaller(TaskInfo.class);
			unmarshaller.setMapping(map);
			TaskInfo taskInfo = (TaskInfo) unmarshaller.unmarshal(is);
			System.out.println(taskInfo.getTaskName());
			System.out.println(taskInfo.getTaskDesc());
			System.out.println(taskInfo.getTaskEnDesc());
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	
	/**
	 * 主方法入口
	 * @param args
	 */
	public static void main(String[] args) {
		TestCase tc = new TestCase();
		tc.test1();
	}
}


TaskInfo.java

package com.utan.bean;

public class TaskInfo {
	private String taskName;
	
	private String taskDesc;
	
	private String taskEnDesc;

	public String getTaskDesc() {
		return taskDesc;
	}

	public void setTaskDesc(String taskDesc) {
		this.taskDesc = taskDesc;
	}

	public String getTaskEnDesc() {
		return taskEnDesc;
	}

	public void setTaskEnDesc(String taskEnDesc) {
		this.taskEnDesc = taskEnDesc;
	}

	public String getTaskName() {
		return taskName;
	}

	public void setTaskName(String taskName) {
		this.taskName = taskName;
	}
}

Mapping.xml

<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
                         "http://castor.org/mapping.dtd">

<mapping>
  <description>Map xml file to Template object</description>
  <class name="com.utan.bean.TaskInfo">
    <map-to xml="trans"/>

    <field name="taskName"
           type="java.lang.String">
      <bind-xml name="taskName" node="element"/>
    </field>

    <field name="taskDesc"
           type="java.lang.String">
      <bind-xml name="taskDesc" node="element"/>
    </field>

    <field name="taskEnDesc"
           type="java.lang.String">
      <bind-xml name="taskEnDesc" node="element"/>
    </field>  
  </class>
</mapping>

test.xml

<?xml version="1.0" encoding="GB2312"?><taskInfo>
  <taskName>RCPMake2101</taskName>
  <taskDesc>人民币跨境收入信息(2101)</taskDesc>
  <taskEnDesc>RCPMake2101</taskEnDesc>
</taskInfo>



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics