知道如何在文档中强制执行utf8

时间:2011-03-01 16:44:31

标签: c# utf-8

我正在创建一个xml文档并试图以utf8存储。但是,我在存储的文档中收到了非utf8撇号。

例如:<Name=Dave t="Owner(e.g pete’s)">

我尝试过以下的

`System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();

var docX  = encoding.GetBytes(vdd.ToString());

System.IO.StreamWriter s = new StreamWriter(pathAndFileName, false, encoding);

string myString = encoding.GetString(docX);

s.Write(myString);

`

本来应该是矫枉过正的,但括号里面的'''仍在显示。我也试过htmlencode,但没有帮助。

xml在notepad ++中读取为utf8,但是'字符在我的所有客户端系统上都没有解析。

请帮助.....

2 个答案:

答案 0 :(得分:0)

编辑:Dour注意到我在所有混乱中遗漏的东西;您粘贴的示例根本不是XML,因此不会解析。我的回答仍然适用,因为'html编码'和UTF8编码是错误的道路。


很难确切地说出你的问题是什么,但我试图消除一些可能性并提出一种可能性:导致你的XML无法正确解析。

这不是编码问题。正如The Skeet所说,UTF8可以代表所有Unicode字符,包括那个字符。相反,这是......嗯...编码问题。那就是:XML数据编码问题。

字符应为属性编码,而不是 html编码

您使用什么API来构建XML?应该为您完成,因此您无需担心编码内容,方式和原因。但是,如果属性编码 字符,我认为您的问题将会停止。

假设我理解你的问题......

答案 1 :(得分:0)

<Name=Dave t="Owner(e.g pete’s)">

这不是XML,'='对于标记名称是非法的。如果它应该是一个属性,则必须引用它。它也没有终止,没有XML声明;如果这是您要输出的内容,则表示您不输出XML。 'UTF-8和XML属性值允许使用'字符。

System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
var docX = encoding.GetBytes(vdd.ToString());

docXvdd中UTF-8字节的字节数组。如果vdd包含任何非Unicode点,则会丢弃它们。

System.IO.StreamWriter s = new StreamWriter(pathAndFileName, false, encoding);

你打开一个UTF-8编码的输出流,足够公平......

string myString = encoding.GetString(docX);

现在您将UTF-8编码的数组转换回C#字符串。为什么呢?

s.Write(myString);

现在,您正在将C#字符串写回UTF-8流,该流执行第二次UTF-8转换。这没有任何意义,请解释你想要完成的事情。

'字符未在我的所有客户端系统上解析

然后您的客户系统不接受UTF-8。要么修复它,要么找出它们接受的编码并使用它。