11 返信 最新の回答 日時: Jul 10, 2003 6:11 AM ユーザー:(taroikai)

    Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします

      既存の非構造化.fmファイルを多数、Conversion Tableを使って構造化しているのですが、XMLに保存する際に、文字が化けます。<br /><br />構造化アプリケーションは、XDocbookとほとんど変わらないもので、XML Export Encoding変数はShift_JISに設定しています。<br /><br />具体的には、<IndexTerm>以下の<Primary>要素の中のキャラクターデータが一部化けて、同要素の終端である</Primary>の最初の左向きアングルブラケットが脱 落するため、XMLとして無効になります。<br /><br />化けるのは、すべての文字ではなく、一定の文字で始まる部分に限られるようです。たとえば、「ー」。<br /><br />また、テーブルの中身はすべて文字化けします。<br /><br />XML Export EncodingをUTF-8にすることも試してみましたが、有効なUTF-8は得られていません。<br /><br />何かおかしなことをしているのでしょうか?<br /><br />OSはWin XP、デフォルトロケールは日本語です。
        • 1. Re: Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします
          Level 1
          実はFM7.0英語版を使用しているのですが、日本語版ならちゃんと動くのでしょうか?英語版と日本語版ではバイナリファイルが異なるのでしょうか?
          • 2. Re: Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします
            taroikai様、こんにちわ。

            変換表を使って文書を構造化した、とありますが、この問題には影響ない事ですよね?
            WYSIWYG上の表示がおかしいのであれば分かりますが…。

            で、日本語扱うなら日本語版、かと思います。
            バイナリファイルっていうのは、FrameMaker文書の事いってますか?
            ロケールを日本にして、プログラム自体は英語版っていうのは、文字の取り扱い(FrameMaker内部での)で違いがあるような気がします。
            英/日でのプログラムの違いは、リソースだけじゃないと思うんですけど。

            Adobeさんに問い合わせるのが、賢明かと…。
            • 3. Re: Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします
              Level 1
              ymgcさん、お返事ありがとうございました。

              「バイナリファイル」といのは、FrameMakerの実行ファイルのことです。

              FrameMaker7.0はXML対応ということだったので、XMLのデフォルト文字コードであるUTF-8もフルサポートしていると期待していたのですが、ShiftJISの.fmドキュ メントをXMLにエクスポートすると、正しいUTF-8にはならないことがわかりました。Shift-JISにエクスポートすれば、テーブルやインデックスマーカ以外はうまくいくようです。

              Adobe本社に問い合わせましたが、サポート範囲外という腑に落ちない返事でした。

              現在日本語版を入手中です。日本語版での結果が出たら報告します。
              • 4. Re: Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします
                Level 1
                日本語版を購入してインストールしましたが、問題は解決されません。XDocbookアプリにおけるテーブルセル用のエレメント、<entry>内のシフトJIS文字はすべて化けてしまいます 。
                • 5. Re: Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします
                  Level 1
                  応答を早まりました。

                  変換表を適用した時点では、文字化けしているのですが、表部分のフォントを日本語に再設定すると、正しいシフトJISの日本語が表示され、XMLにエクスポートすると保存もできました。

                  今となっては確かめるのが面倒ですが、英語版ではフォントを変更しても文字化けしたままだったと思うので、いちおう大きな進歩です。

                  EDDではTable, TGroup, THead, TFoot, TBody, row, entryの各エレメントに日本語フォントを指定しているのですが、変換を適用した際に最初から日本語フォントが適用されない理由が不明です。どうしたらいいでしょう?

                  なお、フォントは和欧合成文字フォントを設定していますが、その名前はEDDに記述するためASCIIだけにしています。合成フォントではなく、単一の日本語フォントを指定することも試してみ たいのですが、「MS明朝」をASCII文字だけでどのように指定したらいいのか不明です。
                  • 6. Re: Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします
                    Level 1
                    taroikai様、こんにちわ。

                    日本語版FrameMakerでは文字化けは解消されたようですね。

                    日本語フォントが適用されない、という事ですが。
                    変換表を適用した時点では、元々指定されている書式のままですよね。
                    その後、EDDを取り込む際に、「更新時に削除:」で「変更された書式ルール」をチェックした状態で行っていますか?

                    それから、「MS明朝」をASCII文字だけでという事ですが、「MSMincho」じゃダメですよね…。
                    日本語EDDだったら、そのまま「MS 明朝」が書けるんですが。
                    ASCII文字名の段落書式を作って各要素に適用する、とかが考えられますが、
                    その他の段落レイアウトに影響もありますし…悩みどころです。
                    • 7. Re: Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします
                      Level 1
                      いろいろ書きましたが、解決できました。FrameMaker7.0にバグがあると思うので、以下はその報告です。

                      まず、変換表を適用した際に表の中の文字が化ける問題と、EDDによる書式の指定はまったく関係がありませんでした。

                      問題は、変換表を用いて文書を構造化すると表示される新規ウィンドウで、テーブルに使われるフォントが日本語フォントになっていないことでした。

                      よく見てみると、大きな文書の中にひとつだけ日本語が化けていないテーブルがあり、他のテーブルとの違いは適用されている表書式のみでした。考えてみると、構造化する前の文書には英語版のFr ameMakerで設定した表書式がそのまま使われていました。これに気づいたのでFrameMakerで表書式のダイアログを開いてみました。表書式にフォントファミリの指定はないので、言 語による影響は受けないと思っていたのですが、ためしに表書式ダイアログを開いて変更は何も加えないまま「すべてを更新」ボタンを押すと、見かけは何も変わらないのですが、変換表を適用して表 示される新規ウィンドウで表に使われるフォントが日本語フォントになりました。

                      表書式はユーザーからはフォント属性を持たないように見えます。英語版で作成したテンプレートに含まれる表書式が、日本語文書において表に適用されるフォントを限定することは、予期されないこ とです。

                      以上
                      • 8. Re: Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします
                        Level 1
                        ymgc様、お返事ありがとうございます。

                        >その後、EDDを取り込む際に、
                        >「更新時に削除:」で「変更された
                        >書式ルール」をチェックした状態で
                        >行っていますか?

                        結果だけを言えば、これは関係なかったようです。

                        >それから、「MS明朝」をASCII文字だけ
                        >でという事ですが、「MSMincho」じゃ
                        >ダメですよね…。
                        >日本語EDDだったら、そのまま「MS
                        >明朝」が書けるんですが。

                        EDDに「MS明朝」と入れるとFrameMakerがフォントが見つからないという旨のメッセージを表示するので、日本語のフォント名は使えないと思っていました。「日本語EDD」というの は、どういう意味ですか?単に日本語を含むEDDという以上のことでしょうか?

                        >ASCII文字名の段落書式を作って各要素に
                        >適用する、とかが考えられますが、

                        現在はそのようにしています。
                        • 9. Re: Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします
                          Level 1
                          taroikai様、こんにちわ。

                          「日本語EDD」というのは、日本語版FrameMakerで新規EDDを作成、または、DTDを開くを行った時に出来るものを指してます。
                          英語版とは、EDDに適用されている書式が違うぐらいかと思いますが…。

                          で、EDDへの日本語フォント名の指定ですが。
                          FrameMakerは厳密な判断をするので、「MS 明朝」と指定して下さい。
                          それを取り込むとエラーになりません。
                          #確認済みです。
                          • 10. Re: Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします
                            Level 1
                            ymgc様、いつも速いレスポンスありがとうございます。「MS 明朝」ですね、助かります。

                            日本語版と英語版のFrameMakerで作るEDDの差異が書式だけならば、書式を変更すればよいのですから、EDDがあまり大きな問題となることはなさそうですね。

                            ところで、このスレッドではじめに報告した問題は2つあって、そのうちの表の中の日本語の問題は解決しましたが、索引マーカ中の日本語に関する問題は、日本語版FrameMakerにしても解 決されませんでした。内容は次のとおりで、バグだと思うので、この場を借りて報告しておきます。

                            ある索引マーカで、マーカテキストを:

                            データ[でーた]

                            とします。変換表で次のようなルールを記述して、

                            M:索引, IndexTerm

                            文書を構造化し、次にFrameMaker7.0に付属するXDocbookアプリケーションの次の読み書きルールを利用し:

                            element "indexterm"
                            {
                              is fm marker element "IndexTerm";
                            }

                            FrameMakerの索引マーカをXMLに書き出します。すると、索引のエントリと、そのソート順を指定するための文字列が入り混じった、次のようなXMLが書き出されてしまいます。

                            デ¥201

                            本来は、

                            データ

                            であるべきです。構造化する前の文書と、structapps.fmファイルに記述したアプリケーションのXML Export Encodingは、ともにShift_JISです。

                            変換表で構造化した段階では、構造化作業領域で確認できるかぎり、マーカテキストは壊れていないので、読み書きルールにより書き出す部分に問題があると思われます。
                            • 11. Re: Shift_JISでXMLにエキスポートすると<IndexTerm>とテーブルが文字化けします
                              Level 1
                              索引マーカテキストの日本語が化ける問題は、FrameMaker7.0自体ではなくて、付属するXDocbookアプリケーションの構成要素であるAPIクライアント、Docbook.dl lであることがわかりました。Docbook.dllはソース付きで配布されていますので、それを修正することで解決しました。

                              具体的には、export.cで索引マーカのテキストを処理するparseMarkerText()と、nextWord()関数における文字列の扱いが、FrameMakerの索引マーカで ソート用文字列の指定に使う角かっこの'['と']'がシフトJIS文字の2バイト目にもあり得ることに配慮していない結果でした。