2016-10-26 14 views
1

Mule CEでフローを実行しており、エンコーディングに大きな問題があります。私が何をするにしても、私のファイルは、英語以外のチャンクでうんざりしてしまいます。JAXBがMuleフローでエンコーディングを乱す

jaxb-object-to-xmlトランスフォーマーの前に、私のペイロードはコンソールとデバッガーでうまく見えますが、その後はすべてがうんざりです。

...... 
    <http:request> 
    <object-to-byte-array-transformer encoding="UTF-8" doc:name="Object to Byte Array"/> 
    <object-to-string-transformer doc:name="String" encoding="UTF-8"/> 
    <json:json-to-object-transformer returnClass="java.util.List" doc:name="JSON2ObjectList" encoding="UTF-8"/> 
    <collection-splitter doc:name="Collection Splitter"/> 
    <choice doc:name="Choice"> 
     <when expression="...."> 
     <custom-transformer returnClass="se.system.Order.SalesHeader" class="se.system.Transformer.Map2Order" doc:name="Map2Order" mimeType="application/xml" encoding="UTF-8"/> 
     <mulexml:jaxb-object-to-xml-transformer name="orderMarshaller" jaxbContext-ref="JAXB_Context" doc:name="orderMarshaller" mimeType="text/xml" encoding="UTF-8"/> 
    <object-to-string-transformer doc:name="XML2String" encoding="UTF-8"/> 
    <set-variable variableName="fileName" value="order-#[function:dateStamp].xml" doc:name="fileName" encoding="UTF-8"/>  
    <file:outbound-endpoint path="${file.ToOrder}" responseTimeout="10000" doc:name="File" outputPattern="#[fileName]" mimeType="text/xml" encoding="UTF-8"/> 

JAXBトランス英語以外の文字が見える後:

Deliveryinfo2="å ä ö Å Ä Ö &amp; % è É"/ 

そして010エディタが1つが信頼される場合、そのANSI DOSは、(台無し文字で、知らないと主張しかし) 私はjaxb変圧器で何かを見逃しましたか?どこか他の場所? これをJavaコンポーネントに置き換え、独自のJAXBコンテキストを開始し、マーシャラーを取得して自分で処理することは可能ですか? もうありません手掛かり...

よろしく

EDIT:それは代替ではありませんので、この1つは、英語以外の文字

<mulexml:object-to-xml-transformer doc:name="Object to XML" encoding="UTF-8" /> 

なくてGregorianCalendarの種類やその他のオブジェクトの私のメインのオブジェクト・リストを処理することができます

答えて

1

これは、指定されたエンコーディングを尊重しないJAXBトランスに起因するバグのようです。source(64行目)を参照してください。

ただし、JAXB documentationによれば、デフォルトのエンコーディングはUTF-8である必要があります。デフォルトでは

エンコーディング

にjava.io.OutputStream、またはjava.io.WriterのにXMLデータを生成する際に、マーシャラーはUTF-8エンコーディングを使用します。これらのマーシャリング操作中に使用される出力エンコーディングを変更するには、setProperty APIを使用します。クライアントアプリケーションは、W3C XML 1.0勧告で定義され、Javaプラットフォームでサポートされている有効な文字エンコーディング名を提供することが期待されます。

これはおそらく、この

final Marshaller m = jaxbContext.createMarshaller(); 
m.setProperty(Marshaller.JAXB_ENCODING, encoding); 
のようなものでなければなりません
関連する問題