0

Java のエスケープ シーケンスに問題があります。私は、いくつかの String 引数と 1 つの byte[ ] 引数を受け取り、byte[ ] を返す 1 つの Web サービス ウィッチを呼び出しています。その byte[ ] を受け取ると、それをファイルに書き込み、そのファイルを Open Office などのテキスト エディターで開きます。すべて問題ないように見えますが、\n と \t はスペース (" ") に置き換えられます。以前にこの Web サービスを使用したことがある人は、\n と \t を文字に置き換えると機能すると言いました
、それでも機能しません。

これを修正するためにGoogleで見つけたほとんどすべてを試しましたが、それでも修正されませんでした。改行文字とタブ文字の代わりに何を送信するかは私次第ですが、\n と \t を正しく置き換える他の文字の組み合わせがあるかどうかはわかりません。

Web サービスの実装が見えないので、ここで正しい質問をするのは非常に困難です。私が送信する SOAP メッセージは何らかの変換を行うのでしょうか? または、次のようなものがあります:

String replaceString = myString.replace("\\n", "
");

それとも私はそれを間違っていますか?

編集 :

ソリューションは次のようになります。

https://github.com/NetAngels/django-webodt/issues/10

しかし、それでも私は役に立ちませんでした。

前もって感謝します。

UPDATE :openOffice .odf file (byte[])ログインしたユーザーのユーザー名などを含む空の少数の String と、フォームにあるテキスト フィールドからのすべてのユーザー入力を含む HashMap を 1 つ送信しています。そのテキスト フィールドでは、ユーザーは改行またはタブを入力することが多く、Web サービスを介してすべてがマージされると、改行とタブがスペースに置き換えられます。Web サービスは正常に機能しており、完全にアクセスできます。Web サービス メソッドからの戻り値は byte[] で、いっぱいになった .odt ファイルを表します。

4

2 に答える 2

0

本当の問題はWebサービスにあることがわかりました。WebサービスのXMLライターは、常になどの文字のエスケープを実行しています。シーケンスを取得したり&, <, >、シーケンスを取得したりする代わりに、witchは改行文字ではありません。このため、.odtファイルを開くとこれらの文字が表示されますが、手動で元の文字に置き換えると、これらの文字が表示され、改行が表示されます。&#10;&#13;&amp;#10;&amp;&#10;

これをCDATAタグに入れようとしました&#10;が、イベントCDATAの中括弧<>でエスケープされているため、この場合、CDATAでさえ正しく解釈されません。&lt;&gt;

于 2012-12-25T09:31:56.550 に答える