powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / кодировка в XSLT
12 сообщений из 12, страница 1 из 1
кодировка в XSLT
    #32601798
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делаю XSLT преобразование

XslTransform transform = new XslTransform();
MemoryStream stream = new MemoryStream();

XmlDocument doc = new XmlDocument();
// *** формирование xml в doc

transform.Transform( doc, null, stream ,null);
bb = stream.GetBuffer();
str="";
for (int i=0; i<stream.Length ;i++){
str += System.Convert.ToChar( bb );
}
нарушается кодировка русских букв, хотя в XSLT стоит кодировка
<?xml version="1.0" encoding="windows-1251" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="windows-1251" />

подскажите, как исправить кодировку
Выходная кодировка: oano - это слово тест

как правильно раскодировать
...
Рейтинг: 0 / 0
кодировка в XSLT
    #32602699
viper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UTF-8 не подходит?
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
кодировка в XSLT
    #32608538
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viper
Легче написать не правильную программу чем понять правильную (С) Alan PerlisПодскажи как написать правильно
...
Рейтинг: 0 / 0
кодировка в XSLT
    #32609925
Ustazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй windows-1251 заменить на utf-8
...
Рейтинг: 0 / 0
кодировка в XSLT
    #32610555
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UstazzПопробуй windows-1251 заменить на utf-8Пробовал - не помогает,
Должны же быть стандартные перекодировщики?
...
Рейтинг: 0 / 0
кодировка в XSLT
    #32610606
Если задача получить строку то наверное лучше будет использовать StringWriter примерно так:
Код: plaintext
1.
2.
3.
4.
StringWriter sw = new StringWriter();
transform.Transform(doc, null, sw, null);
str = sw.ToString();
sw.Close();
...
Рейтинг: 0 / 0
кодировка в XSLT
    #32610705
Ustazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как вообще используется результат трансформации?
...
Рейтинг: 0 / 0
кодировка в XSLT
    #32611480
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
XmlDocument xml = new XmlDocument();
// формирование xml


XslTransform XSLTemplate = new XslTransform();

System.IO.MemoryStream outputStream = new System.IO.MemoryStream();
System.IO.StreamReader outputReader = new System.IO.StreamReader(outputStream,System.Text.Encoding.GetEncoding("windows-1251"));

XSLTemplate.Transform(xml, null, outputStream, (XmlResolver)null);

// чтение : 
outputStream.Flush();
outputStream.Position =  0 ;
string outputResult = outputReader.ReadToEnd();


т.е. все то же, но читать через reader
...
Рейтинг: 0 / 0
кодировка в XSLT
    #32611924
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Результат присваивается строке, которая осуществляет вывод шаблоне.
test.aspx.cs:

transform.Transform( doc, null, stream ,null);
bb = stream.GetBuffer();
str="";
for (int i=0; i<stream.Length ;i++){
str += System.Convert.ToChar( bb);
}

this.myStr = str;


test.aspx:
<htm>...<body>...
<% = myStr %> ..... </body></html>
...
Рейтинг: 0 / 0
кодировка в XSLT
    #32611981
Ustazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх, использовали бы лучше XML Web Server Control, а не изобретали велосипед. GetBuffer выдает массив байт, возможно тут и сбой происходит. Пробовали через StringWriter делать?
...
Рейтинг: 0 / 0
кодировка в XSLT
    #32613236
akalend
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UstazzЭх, использовали бы лучше XML Web Server Controlэто как - привиди пример
Пробовали через StringWriter делать?да все получилось, спасибо,
еще ранее мне помогли написать перекодировщик
bb = stream.GetBuffer();
str="";
for (int i=0; i<stream.Length ;i++)
{
if (bb >176)
{
str += System.Convert.ToChar(4*256+bb-176);
}
else
{
str += System.Convert.ToChar(bb);
}

}
Но с sw лучша
...
Рейтинг: 0 / 0
кодировка в XSLT
    #32613587
Ustazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пару дней назад писал...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<asp:Xml ID="xmlMenu" Runat="server"></asp:Xml>

//code behind
protected Xml xmlMenu;

private const string MenuViewXsltFilePath = "XSLT/MenuView.xslt";

private void Page_Load(object sender, System.EventArgs e)
{
	xmlMenu.Document = SecurityService.GetMenuXmlForRole(CurrentUser.Role);
	xmlMenu.TransformSource = MenuViewXsltFilePath;

	XsltArgumentList args = new XsltArgumentList();
	args.AddParam("languageId", string.Empty, CurrentUser.LanguageId);
	args.AddParam("appUrl", string.Empty, AppUrl);
	args.AddParam("imagesUrl", string.Empty, ImagesUrl);
	xmlMenu.TransformArgumentList = args;

	xmlMenu.DataBind();
}
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / кодировка в XSLT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]