1

製品チームが Web サイトにエクスポートされる製品を作成および管理し、別のデザイナー チームが同じ製品データを表示する新聞の印刷広告を作成できるようにするコンテンツ管理ツールを作成しました。

私の問題は、InDesign のグラフィック デザイナーと、彼らが InDesign 内で使用するマクロにあります。マクロには、コピー/貼り付けされたテキスト/データを取得し、特定の文字の存在に基づいて InDesign 内のテキストを自動フォーマットする機能があります。特に、設計チームはマクロでタブ、「ソフト ライン ブレーク」 (シフト リターン)、および通常のライン ブレーク (ハード リターン) を使用します。

現在、レコードと目的の書式設定文字を含むテキスト ブロックを Java クラスで生成し、それを DWR 経由でクライアント側に送信しています。タブ文字を送信する必要がある場合、\t を送信すると \r が返され、ソフト改行が \n になることを望んでいましたが、InDesign は \r と \n の両方を通常の改行と見なすようです。

昨日、Unicode \u2028 (ソフト改行) と \u2029 (通常の改行) に遭遇するまで、ソフトリターンを渡すことができることをあきらめていました。InDesign がこれらの文字を異なる方法で認識することを期待して、\r と \n の代わりにこれらの文字の両方を出力してみました。デザイナーが出力をコピーするボックスには、文字がないように見えます。\u2028 と指定した場所には改行がまったくありません。出力をコピーしてテキスト エディターに貼り付けると、そこに認識されない文字があることがわかります (疑問符の付いたボックスとして表示されます)。

プラットフォームは、Tomcat 上で実行される Java/MySQL です。

これまでのところ、このアプリケーションでは文字エンコーディングをあまり扱う必要はありませんでした。ヘッダーが<meta charset="utf-8" />設定されましたが、ここまでです。これをutf-16に設定しようとしましたが、出力は変わりません。MySQL データベースのすべてのテーブルは、utf8/utf8_general_ci に設定されています。

考え?InDesign に、コピー/貼り付けされたテキストを取り込んで、そのマクロ対応文字をすべて認識させるにはどうすればよいですか? 実際、認識していないのはソフトな改行だけです。ヘルプ!:)

ありがとうございました。長くなってすみません!

ライアン V

4

2 に答える 2

1

どのように文字を転送して印刷しようとしていたのかはわかりませんが (DWR と JavaScript コードを投稿すると、もっと役立つかもしれません)、Java 出力が実際の UTF であることを確認することをお勧めします。 -8 次のようなものを使用:

String yourRecordString = "Some line 1. \u2028Some line 2.";
ByteBuffer bb = Charset.forName("UTF-8").encode(yourRecordString);  

bb次に、バイトを出力ストリーム/ファイルに書き出してチェックできます。(文字列や文字としてではなく、必ずバイトとして記述してください。) たとえば、 の UTF-8 エンコーディング\u2028E2 80 A8であるため、出力の適切な場所にそのシーケンスが表示されるはずです。(私はこのようなことのためにvimでhexmodeを使用します。)

次に、これらのバイトが JavaScript 側で受信されることを確認します。(私は DWR の専門家ではありませんが、Java 関数が文字列以外のものを返すようにしたいと思うかもしれません。)

これは、少なくとも問題がどこにあるかを診断するのに役立ちます。そのシーケンスが表示され、InDesign がまだソフトな改行を認識しない場合は、少なくとも問題が InDesign にあることがわかり、他の解決策 (デザイナーのマクロを変更して他の文字を認識するなど) を見つける必要があることがわかります。 )。

(また、を使用してJVMのデフォルトエンコーディングを確認できることに注意してくださいCharset.defaultCharset()。私の推測では、あなたのデフォルトはUTF-8ではなく、エンディアンなどのために試したUTF-16にもInDesignで問題があった可能性があります。 .)

于 2013-11-25T04:06:40.120 に答える