2012-05-09 5 views
0

私は(Java用)Eclipseの下にDOMを使ってXMLファイルを作成する必要がありますし、次のコードを使用して:DOMを使用してXMLを作成した後、ヘッダーにはUTF-8が含まれていますか?

 // 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つの宣言の違いは何ですか? <?xml version="1.0"?>

よろしく現代の世界では

+1

なぜエンコードに問題がありますか? –

+0

@ジムガリソン:ジム、私はそれが問題だとは言わなかった、ちょうど2つの違いを理解したいと思った。さらに、私は "<?xml version =" 1.0 "?>"というヘッダーでファイルを提出する必要があります。あなたが説明できるなら、私は感謝します。 – ron

+0

下記の私の答えを参照してください。 –

答えて

1

、テキストファイルは文字がどのように表現されるかを定義した、「エンコーディング」を持っている:私は、ヘッダーを使用してXMLファイルを生成するにはどうすればよい

  • ファイル。ファイルにプレーンなASCII文字(0x01〜0x7f)しか含まれていない場合は、これは表示されませんが、シンボルやアクセント付き文字など他のものを表現する必要がある場合は、ファイルの消費者はその文字のエンコード方法を知る必要があります。

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

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

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

  • 関連する問題