Bug 129424 BIRT XML ODA Driver does not handle non-English strings properly
When a report is bound to an XML data source with non-English strings, those strings cannot be displayed in the report properly. Steps to reproduce the problem: . Prepare an XML file with some non-English characters in the values/attributes of its XML elements. (A sample XML file with traditional Chinese strings is attached. Those strings can also be replaced by the other non-English strings.) . Inside BIRT's Report Design Perspective, create a new report design. . Use the XML Data Source option to create a new data source with this XML file. . Create a new data set using that data source. If you use the attached XML file, specify "/library/book" for the Table Mapping, and add "/title" to the Column Mapping. Look at the Preview Results and the data in the "title" column are already scrambled. . If we keep going forward to add a single-column table and bind the title column to the table, the preview/generated results shows illegible characters. This would be a serious issue for supporting non-English languages.
data/org.eclipse.birt.report.data.oda.xml/src/org/eclipse/birt/report/data/oda/xml/util/SaxParser.java
if( this.stopCurrentThread )
			throw new ThreadStopException();
		
		String elementName = getElementName( uri, qName, name );
		String parentPath = pathHolder.getPath();
		
		if(this.currentElementRecoder.get(parentPath+UtilConstants.XPATH_SLASH+elementName)==null)
		{
			this.currentElementRecoder.put(parentPath+UtilConstants.XPATH_SLASH+elementName,new Integer(1));
		}else
		{
			this.currentElementRecoder.put(parentPath+UtilConstants.XPATH_SLASH+elementName, new Integer(((Integer)this.currentElementRecoder.get(parentPath+UtilConstants.XPATH_SLASH+elementName)).intValue()+1 )); 
		}
		pathHolder.push( elementName+"["+((Integer)this.currentElementRecoder.get(parentPath+UtilConstants.XPATH_SLASH+elementName)).intValue()+"]" );
		
		for ( int i = 0; i < atts.getLength( ); i++ )
		{
			spConsumer.manipulateData( getAttributePath( atts, i ), atts.getValue( i ) );
			spConsumer.detectNewRow( getAttributePath( atts, i ) );
		}
	}
	/**
	 * Build the xpath of an attribute.
	 * 
	 * @param atts
	 * @param i
	 * @return
	 */
	private String getAttributePath( Attributes atts, int i )