Любая идея, как применить utf8 в документе - PullRequest
0 голосов
/ 01 марта 2011

Я создаю 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 отлично читается как utf8 в notepad ++, но этот символ не анализируется на всех моих клиентских системах.

Помогите пожалуйста .....

Ответы [ 2 ]

0 голосов
/ 02 марта 2011
<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());

docX - это байтовый массив байтов UTF-8 в vdd. Если 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. Либо исправьте, либо выясните, какую кодировку они принимают, и используйте ее.

0 голосов
/ 01 марта 2011

РЕДАКТИРОВАТЬ: Dour отметил то, что я пропустил во всей растерянности;вставленный вами образец вообще не является XML и поэтому не будет анализироваться.Мой ответ все еще применим, поскольку «html-кодирование» и UTF8-кодирование были неправильными путями, чтобы идти сюда.


Трудно точно сказать, в чем ваша проблема, но я попытался устранить некоторыеиз возможностей и придумать возможность: приводит к тому, что ваш XML не анализируется правильно.

Это не проблема кодирования.Как отмечает Skeet, UTF8 может представлять все символы Юникода, включая этот.Вместо этого это ... ммм ... проблема кодирования.То есть: проблема кодирования данных XML.

Символ должен быть с атрибутом , а не с HTML-кодом

Какой API вы используете для построенияXML?Это должно быть сделано для вас, так что вам не нужно беспокоиться о том, что кодировать, как и почему.Но если вы атрибут закодируете символ, я думаю, что ваша проблема исчезнет.

Если я понимаю вашу проблему ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...