0

Eclipse(Javaの場合)でDOMを使用し、次のコードを使用してXMLファイルを作成する必要があります。

        // write the content into xml file
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new File("output.xml"));  
        transformer.transform(source, result);

私のXMLの最初の行は:

<?xml version="1.0" encoding="UTF-8"?>

ではなく:

<?xml version="1.0"?>

私の質問は:

  1. これら2つの宣言の違いは何ですか?

  2. ヘッダーを使用してXMLファイルを生成するにはどうすればよいですか?<?xml version="1.0"?>

よろしく

4

1 に答える 1

1

現代の世界では、テキストファイルには「エンコーディング」があり、ファイル内で文字がどのように表現されるかを定義します。ファイルにプレーンASCII文字(0x01から0x7f)のみが含まれている場合、これは表示されませんが、記号やアクセント付き文字などの他の文字を表す必要がある場合、ファイルの使用者はそれらの文字がどのようにエンコードされているかを知る必要があります。

拡張文字をエンコードする方法はいくつかありますが、最も一般的な方法はISO-8859-x(xは言語によって異なります)とUnicodeで、可能なすべての文字に一意の番号を割り当てます。ISOコードページは、拡張文字に0x80から0xFFの範囲を使用します。UTF-8は、任意の長さのUnicode文字(別名「コードポイント」)を複数の8ビットバイトで表すシステムです。同じ拡張文字(e-circumflexなど)は、異なるエンコーディングで異なる表現になります。

使用したシリアライザーは、UTF-8エンコーディングを出力するように構成されています。そのファイルの利用者は、UTF-8エンコーディングが使用されていることを認識している必要があります。そうしないと、データを操作するリスクがあります。おそらく、黒菱形の文字を含むWebページ、またはアポストロフィやその他の特殊文字などが2つの奇妙な文字に置き換えられたテキストを見たことがあるでしょう。これらは、互換性のないエンコード/デコードの症状です。

おそらく、シリアライザーにエンコード宣言を省略させる方法がありますが、そうすると、ファイルのコンシューマーは、エンコードについて推測する必要があるため、ファイルを正しくデコードできない場合があります。

于 2012-05-09T16:36:17.450 に答える