2016-10-26 15 views
0

私は私のサイトのライブラリに添付していますXMLファイルを持っています。 XMLにはラテン文字が含まれていますので、このメソッドを使用してエンコードしています。item.Attachments.Add("xyz.xml", Encoding.GetEncoding("iso-8859-1").GetBytes(writerXml.ToString()));エンコーディングXMLファイルの破損

問題は、ブラウザでファイルを開こうとしているときに特殊文字が発生している場所が壊れていることです。 XSLスタイルシートを使用してXML入力を表示できません。

私はこの問題を解決する方法を知りたいのですが、なぜそれをブラウザで生成できないのですか?以下のコードを使用して宣言を追加しようとし

XDocument doc = new XDocument(); 
      doc.Declaration = new XDeclaration("1.0","ISO-8859-1", null); 
      XElement element = new XElement("webapp", new XAttribute("name", webApp.Name), new XAttribute("id", webApp.Id), 
          MyInformation; 
      doc.Add(element); 
      return doc.ToString(); 
     } 
+0

再現可能な例(XML + XSLT)を投稿してください。どのブラウザを使用しているかを明記してください。 –

+0

IEでは、ファイルが破損する正確な値(つまり、特殊文字)を取得します。クロムで行と列の番号が –

答えて

0

明らかにファイルのエンコーディングは、ブラウザがそれが考えるものではありません。

なぜあなたはutf-8ではなくiso-8859-1を使用したいのか分かりませんが、それがあなたの選択であれば、(a)開始時のXML宣言がファイルをiso-8859-1として宣言し、(b)ファイルが提供されたときにHTTPヘッダーに矛盾する宣言がないこと。私の推測(証拠はほとんどありません)は、ファイルにXML宣言がないため、ブラウザはUTF-8を想定しています。

+0

のエラーが表示されるので、XML生成の開始時に<?xml version = "1.0" encoding = "ISO-8859-1"という行を追加すると、 ..それはうまくいくはずですか? 私はISO-8859-1を行っています。ラテン文字を扱うコードに既に実装されていますので、 –

+0

ファイルはiso-8859-1エンコーディングを使用していて、XML宣言はありませんそれを開始し、それは動作しません。まずそれを修正し、他の問題がないかどうかを確認します。しかし、XMLファイルを手作業で構築することは、とにかく良い考えではありません。エスケープするなど、間違ったことがたくさんあります。その目的のためにライブラリを使用する方が良い。 –

+0

Ok ..ご指導ありがとうございます。私はコードを使ってXMLを構築しており、特殊文字がない場合はブラウザで開くことができます。だから私は開始タグを取得するコードで同じ修正します。結果が出たら更新されます。再度、感謝します!! –

関連する問題