Выдает ошибку:
System.Xml.XmlException: «System does not support ‘windows-1251’ encoding.
Как раскодировать?
string URLXml = "http://сайт.ru/file.xml";
XmlReaderSettings settings = new XmlReaderSettings();
XmlReader reader = XmlReader.Create(URLXml);
while (reader.Read())
{}
aepot
42.2k5 золотых знаков17 серебряных знаков48 бронзовых знаков
задан 14 июл 2020 в 9:48
2
В отличие от обычного .NET Framework, в котором изначально поддерживается большое количество кодировок, в .NET Core по умолчанию доступны лишь несколько базовых.
Вся информация описана в документации: CodePagesEncodingProvider.
-
Добавьте в проект ссылку на сборку System.Text.Encoding.CodePages.dll.
-
Получите объект CodePagesEncodingProvider из статического свойства CodePagesEncodingProvider.Instance.
-
Передайте объект CodePagesEncodingProvider методу Encoding.RegisterProvider.
Фактически, в код нужно добавить одну строку:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
ответ дан 14 июл 2020 в 14:04
Alexander PetrovAlexander Petrov
28.4k5 золотых знаков26 серебряных знаков53 бронзовых знака
1
Encoding encoding = Encoding.GetEncoding("windows-1251");
ответ дан 14 июл 2020 в 11:58
rabbitrabbit
8813 серебряных знака10 бронзовых знаков
Вы можете попробовать LINQ to XML API.
c#
void Main()
{
const string Url = @"http://сайт.ru/file.xml";
XDocument doc = XDocument.Load(Url);
}
ответ дан 14 июл 2020 в 12:22
Yitzhak KhabinskyYitzhak Khabinsky
2,2091 золотой знак4 серебряных знака8 бронзовых знаков
2
Выдает ошибку:
System.Xml.XmlException: «System does not support ‘windows-1251’ encoding.
Как раскодировать?
string URLXml = "http://сайт.ru/file.xml";
XmlReaderSettings settings = new XmlReaderSettings();
XmlReader reader = XmlReader.Create(URLXml);
while (reader.Read())
{}
Ответы (3 шт):
Encoding encoding = Encoding.GetEncoding("windows-1251");
→ Ссылка
Автор решения: Yitzhak Khabinsky
Вы можете попробовать LINQ to XML API.
c#
void Main()
{
const string Url = @"http://сайт.ru/file.xml";
XDocument doc = XDocument.Load(Url);
}
→ Ссылка
Автор решения: Alexander Petrov
В отличие от обычного .NET Framework, в котором изначально поддерживается большое количество кодировок, в .NET Core по умолчанию доступны лишь несколько базовых.
Вся информация описана в документации: CodePagesEncodingProvider.
-
Добавьте в проект ссылку на сборку System.Text.Encoding.CodePages.dll.
-
Получите объект CodePagesEncodingProvider из статического свойства CodePagesEncodingProvider.Instance.
-
Передайте объект CodePagesEncodingProvider методу Encoding.RegisterProvider.
Фактически, в код нужно добавить одну строку:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
→ Ссылка
- Remove From My Forums
-
Общие обсуждения
-
Hi,
I’m facing a problem in my app with xml files having «windows-1251» encoding. I’m using XmlReader class to read the data from a stream. As said in XmlReader documentation the reader will scan xml for the encoding field and work according to that. The xml starts
with<?xml version="1.0" encoding="windows-1251"?>
and XmlReader throws UnSupportedException with message «System does not support ‘Windows-1251’ encoding.».
This has been discussed in forums
http://www.hardcodet.net/2010/03/silverlight-text-encoding-class-generator
but I don’t know how I can use my hard-coded windows-1251 encoding class in XMLReader. Is it possible to add implementation of my class to system supported encodings so that XMLReader could find it?Thanks in advance.
-
Home -
Software Programming -
How to decode xml in code 1251
This topic has been deleted. Only users with topic management privileges can see it.
-
Makes a mistake:
System.Xml.XmlException: «System does not support ‘windows-1251’ encoding.
How do you figure it out?
string URLXml = "http://сайт.ru/file.xml";
XmlReaderSettings settings = new XmlReaderSettings();
XmlReader reader = XmlReader.Create(URLXml);while (reader.Read())
{}
-
Unlike conventional NET Framework, which initially supports a large number of codings, only a few bases are available in NET Core default.
All information is described in the documentation: https://docs.microsoft.com/dotnet/api/system.text.codepagesencodingprovider?view=netcore-3.1 ♪
-
Add a reference to the collection System.Text.Encoding.CodePages.dll.
-
Get the object of the CodePagesEncodingProvider from the static character of CodePagesEncodingProvider.Instance.
-
Transmit thePagesEncodingProvider Method Encoding.RegisterProvider.
In fact, one line should be added to the code:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
-
Suggested Topics
-
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views -
2
0
Votes2
Posts0
Views
GENDALF_ISTARI 15 / 32 / 19 Регистрация: 20.08.2013 Сообщений: 740 |
||||||||||||||||||||
1 |
||||||||||||||||||||
10.06.2018, 20:36. Показов 5025. Ответов 13 Метки regex, xml, регулярное выражение (Все метки)
Регулятор выражение xml Тема пойдет о регуляторе выражения Сам XML таков и он идет с повторениями
думаю понятно мне нужно найти допустим SOME , или GHOP
вывести каждое значение тега
Я разбирался с ним
читает из начально а как (….) вот тут мостить не могу в голове представить
__________________
0 |
Lexeq 1146 / 738 / 483 Регистрация: 21.01.2014 Сообщений: 1,903 |
||||
10.06.2018, 22:03 |
2 |
|||
А в переменной xml разве не загруженный xml хранится?
1 |
Someone007 6269 / 3897 / 1567 Регистрация: 09.05.2015 Сообщений: 9,188 |
||||
10.06.2018, 22:44 |
3 |
|||
Сообщение было отмечено OwenGlendower как решение Решение
причина почему парсинг не нужен Чего? Вы хоть сами поняли что написали?
1 |
GENDALF_ISTARI 15 / 32 / 19 Регистрация: 20.08.2013 Сообщений: 740 |
||||||||
10.06.2018, 22:45 [ТС] |
4 |
|||||||
я же говорю обычно xmldoc.Load(«файл.xml»); можно запелить созданием самого файла xml пихнуть все содержимое туда проще регулятором сразу считать кусок
все это хорошо
0 |
6269 / 3897 / 1567 Регистрация: 09.05.2015 Сообщений: 9,188 |
|
10.06.2018, 22:47 |
5 |
я же говорю обычно xmldoc.Load(«файл.xml»); Вы не поверите, но там есть перегрузка, принимающая Stream…
1 |
15 / 32 / 19 Регистрация: 20.08.2013 Сообщений: 740 |
|
10.06.2018, 22:52 [ТС] |
6 |
Someone007 блин и правда, не подумал потоком пихнуть
0 |
1146 / 738 / 483 Регистрация: 21.01.2014 Сообщений: 1,903 |
|
10.06.2018, 22:57 |
7 |
GENDALF_ISTARI, и есть LoadXml(string), которому можно скормить строку.
0 |
GENDALF_ISTARI 15 / 32 / 19 Регистрация: 20.08.2013 Сообщений: 740 |
||||
10.06.2018, 23:05 [ТС] |
8 |
|||
Вообще когда
выдает ошибку
0 |
6269 / 3897 / 1567 Регистрация: 09.05.2015 Сообщений: 9,188 |
|
10.06.2018, 23:08 |
9 |
выдает ошибку Какую? У меня пример из поста выше с вашим xml и моим локальным сервером отработал без ошибок.
1 |
15 / 32 / 19 Регистрация: 20.08.2013 Сообщений: 740 |
|
10.06.2018, 23:17 [ТС] |
10 |
The string was not recognized as a valid Uri. at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext) Добавлено через 2 минуты System does not support ‘windows-1251’ encoding. Line 1, position 31. at System.Xml.XmlTextReaderImpl.Throw(Exception e)
0 |
6269 / 3897 / 1567 Регистрация: 09.05.2015 Сообщений: 9,188 |
|
10.06.2018, 23:26 |
11 |
System.Xml.Linq.XDocument.Load(String uri) Принимает адрес, по которому находится xml, а вы видимо что-то не то передали (сам xml, вместо адреса?).
System does not support ‘windows-1251’ encoding. Line 1, position 31. Ну а это вообще странно. У вас почему-то система не поддерживает кодировку windows-1251. У меня данное исключение не выбрасывается. Возможно потому, что я сохранил xml файл в кодировке utf-8.
1 |
15 / 32 / 19 Регистрация: 20.08.2013 Сообщений: 740 |
|
10.06.2018, 23:29 [ТС] |
12 |
Someone007 в личку вам скину смс читайте
0 |
Someone007 6269 / 3897 / 1567 Регистрация: 09.05.2015 Сообщений: 9,188 |
||||
10.06.2018, 23:35 |
13 |
|||
Можно еще такой вариант попробовать
0 |
15 / 32 / 19 Регистрация: 20.08.2013 Сообщений: 740 |
|
10.06.2018, 23:39 [ТС] |
14 |
Сработало работает )))
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
10.06.2018, 23:39 |
14 |
-
#1
Не поддерживается при загрузке xml кодировка windows-1251
Пытаюсь прочитать xml-файл с русскими буквами в кодировке windows-1251 на PHP 5.0.5 + libxml + libiconv
И на попытку получить содержимое файла:
Warning: DOMDocument::load() [function.load]: Unsupported encoding windows-1251 in /var/www/example.xml, line: 1 in /var/www/test1.php on line 7
Хотя iconv отлично перекодирует из одной кодировки в другую.
echo iconv(«WINDOWS-1251», «KOI8-R», «Проверка.»);
Нужна помощь!
-
#2
А ты пробовал переходить на UTF-8? Говорят очень полезная штука
-
#3
Как ее использовать, она не поддерживает кирилицу!
-
#4
Line
UTF8 поддерживает кириллицу
-
#5
Ну так это бред, получается вначале из Win-1251 в UTF8 потом опять в win-1251
-~{}~ 15.11.05 16:44:
А как решить мою проблему?
Ну подскажите
-~{}~ 15.11.05 22:40:
Автор оригинала: Line
Ну так это бред, получается вначале из Win-1251 в UTF8 потом опять в win-1251-~{}~ 15.11.05 16:44:
А как решить мою проблему?
Ну подскажите
Так не хочется использовать UTF-8, хочтеся WINDOWS-1251
-
#6
libxml у тебя криво собран и не знает ниче про кодировки
-
#7
PHP:
$doc = new DOMDocument();
$doc->encoding = "windows-1251";
$string = iconv("windows-1251", "UTF-8", "тестовая строка");
$node = $doc->createElement("para",$string);
$newnode = $doc->appendChild($node);
echo '<pre>';
echo htmlentities($doc->saveXML());
echo '</pre>';
Отдает абракадабру. Тоже проблема с неправильно собранной libxml?
Версия php — 5.1.2
-
#8
Насколько я знаю, в XML-файлах вся информация хранится в кодировке UTF-8. Следовательно, тебе по-любэ придется делать iconv() туда-сюда.
-
#9
Задачу саму опиши — что-куда и почему.
-
#10
Fred — ВНУТРЕННЕЕ представление у всех XML документов во ВСЕХ XML DOM XSLT библиотеках это UTF (8/16 или вообще полный unicode, зависит от реализации)
libxml в php5 это utf8
если хочешь выводить в другой кодировке, то придется
но совет простой
если есть возможность (MySQL 4.1+, PostgreSQL8.x, FireBird 1.5) то лучше переходи на utf8 СРАЗУ и везде
-
#11
Даже если генерировать документ в родной для ДОМ кодировке, всейравно получается абракадабра.
PHP:
$doc = new DOMDocument();
$doc->encoding = 'UTF-8';
$string = iconv("windows-1251", "UTF-8", "тестовая строка");
$node = $doc->createElement("para",$string);
$newnode = $doc->appendChild($node);
echo '<pre>';
echo htmlentities($doc->saveXML());
echo '</pre>';
echo $string;
Выдает:
<?xml version=»1.0″ encoding=»UTF-8″?>
<para>Ñ?еÑ?Ñ?оваÑ? Ñ?Ñ?Ñ?ока</para>
тестовая строка
-
#12
Тут уже грабли в русском апаче
попробуй в директории скрипта создать файл .htaccess и прописать CharsetDisable On
-
#13
PHP:
$string = iconv("windows-1251", "UTF-8", "тестовая строка");
А почему тогда строка в UTF8 выводится нормально?
-
#14
Если есть уже PHP5 — юзайте SimpleXML
6 строчек кода и все работает.
-
#15
Я пока лишь изучал DOM модель. Поэтому и возник вопрос: это у меня руки кривые или у DOM проблемы с кириллицей. Собственно с такими же проблемами столкнулся и в DOM XML (PHP4).
А насущные проблемы пока решаю и без DOM-модели.
-~{}~ 07.02.06 12:29:
Автор оригинала: worm
Тут уже грабли в русском апаче
попробуй в директории скрипта создать файл .htaccess и прописать CharsetDisable On
Apache не русский, а обычный 1.3.33
-
#16
я не понимаю в чем проблема-то:
Код:
$doc = new DOMDocument();
$doc->encoding = 'UTF-8';
$string = iconv("WINDOWS-1251", "UTF-8", "тестовая строка");
$node = $doc->createElement("para",$string);
$newnode = $doc->appendChild($node);
echo '<pre>';
echo htmlentities($doc->saveXML(), ENT_QUOTES, "UTF-8");
echo '</pre>';
echo $string;
<?xml version=»1.0″ encoding=»UTF-8″?>
<para>тестовая строка</para>
тестовая строка
-
#17
Спасибо, теперь все работает. Сам себя запутал.
-
#18
скажите что нужно добавить вот мой парсер
PHP:
<?php
require_once('include/dbLayer.php');
require_once('include/readableData.php');
require_once('include/settings.php');
$alliancePlrs = array();
$hordePlrs = array();
$gmPlrs = array();
$s = gSettings::get();
$sDoc = new DOMDocument();
$sDoc->load($s->statfile);
$plrList = $sDoc->getElementsByTagName('plr');
for($i = 0; $i < $plrList->length; $i++){
$plr = $plrList->item($i);
$ar = array( 'name' => 'Unknown', 'level' => 0, 'gender' => 0, 'race' => 0, 'class' => 0, 'map' => -1, 'areaid' => -1);
$n = $plr->firstChild;
while($n){
$ar[$n->nodeName] = $n->nodeValue;
$n = $n->nextSibling;
}
switch($ar['race']){
case 1: // human
case 3: // dwarf
case 4: // night elf
case 7: // gnome
case 11: // draenei
$alliancePlrs[] = $ar;
break;
case 2:
case 5:
case 6:
case 8:
case 10:
$hordePlrs[] = $ar;
break;
default:
// do not know where to add players
break;
}
}
?>
Парсит вот эту страничку
PHP:
<?xml version="1.0" encoding="windows-1251"?>
<serverpage>
<sessions>
<plr>
<name>Сатана</name>
<race>5</race>
<class>5</class>
<gender>0</gender>
<pvprank>0</pvprank>
<level>70</level>
<map>530</map>
</plr>
</sessions>
</serverpage>
Выводит name как сатана
-
#19
sarsen
Не нужно писать в тему 2х летней давности. Создай новую.
И прочти правила форума обязательно ещё раз.
-
#20
sarsen
будешь диггерствовать, поставлю read-only
не надо спамить в старые темы
In universal windows app, calling Encoding.GetEncoding(«windows-1251») will throw an exception
An exception of type ‘System.ArgumentException’ occurred in mscorlib.ni.dll but was not handled in user code
Additional information: ‘windows-1251’ is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
same for euc-kr charset.
You will likely need to reference the System.Text.Encoding.CodePages package and then use Encoding.RegisterProvider.
This Stack Overflow answer addresses a similar problem. I expect the answer will work for you as well.
The reason this is done was to remove the need to carry encoding data with ever UWP app, even if the apps did not use them.
msftgits
transferred this issue from dotnet/corefx
Jan 31, 2020
msftbot
bot
locked as resolved and limited conversation to collaborators
Jan 1, 2021
Merry christmas all,
I’ve just installed Plan-G v4 on a new PC as I am planning a VFR flight (having used version 2 and 3 some years back when I was more active simmer), but I am having following error when trying to build a database.
15:14:00.7 StartBuild_Executed: System.Xml.XmlException: System does not support 'Windows-1252' encoding. Line 1, position 31.
---> System.ArgumentException: 'Windows-1252' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. (Parameter 'name')
at System.Text.EncodingTable.InternalGetCodePageFromName(String name)
at System.Text.EncodingTable.GetCodePageFromName(String name)
at System.Text.Encoding.GetEncoding(String name)
at System.Xml.XmlTextReaderImpl.CheckEncoding(String newEncodingName)
--- End of inner exception stack trace ---
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args, Exception innerException)
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg, Exception innerException)
at System.Xml.XmlTextReaderImpl.CheckEncoding(String newEncodingName)
at System.Xml.XmlTextReaderImpl.ParseXmlDeclaration(Boolean isTextDecl)
at System.Xml.XmlTextReaderImpl.Read()
at Plan_G.Model.BGLSCAN.Scan() in C:UsersTimsourcereposPlan-GModelBGLScan.cs:line 208
at Plan_G.ViewModel.BuildDatabaseViewModel.StartBuild_Executed() in C:UsersTimsourcereposPlan-GViewModelBuildDatabaseViewModel.cs:line 143
15:14:48.1 Build-DB cleanup lambda
That’s a new error to me. I’m guessing that’s something introduced with Windows 11. I’ll look into it.
Tim. @TimArnot
I’m using Windows 10.
Let me know if you need any more diagnostics details.
Hmm. Okay. What are your language settings?
«Windows-1252» is the old one-byte character set from way back when. Plan-G should be using the fully multilingual UTF-8 pretty much everywhere. I’m certainly surprised it’s asking for 1252.
Tim. @TimArnot
This is indeed quite unusual but I don’t know the codebase so…
Culture:
1033 en-US English (United States)
WinSystemLocale:
1033 en-US English (United States)
Additionally:
[System.Text.Encoding]::Default
IsSingleByte : True
BodyName : iso-8859-1
EncodingName : Western European (Windows)
HeaderName : Windows-1252
WebName : Windows-1252
WindowsCodePage : 1252
IsBrowserDisplay : True
IsBrowserSave : True
IsMailNewsDisplay : True
IsMailNewsSave : True
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : True
CodePage : 125
FWIW: I’m on a Windows 10 Pro version 1909 (seems my windows updates got… halted at some point?) which is originally installed over a Windows 7 installation.
The «Beta: Use Unicode UTF-8 for worldwide language support» checkbox is unchecked.
I looked a bit closer into where the error was coming from. It’s actually from the XML reader, loading the list of addon sceneries. I can’t tell from the log snippet whether you’re building data for P3Dv5 or P3Dv4 (or earlier), but it’s trying to read
«C:ProgramDataLockheed MartinPrepar3D v5scenery_add-ons.xml» (or v4, or…)
The first line of which is normally
<?xml version=»1.0″ encoding=»UTF-8″?>
I suspect the file on your PC says some different encoding. Could you confirm that’s the case? And if so, does changing this line to UTF-8 fix it?
Thanks.
Tim. @TimArnot
Indeed the first line of the file does say Windows-1252, and upon changing to UTF-8 now the P3D (v4) DB is built successfully.
I guess this might be because of the default encoding, which would be probably due to the fact this laptop is a legacy Win 7 install updated through to current version of W10.
- TA Software — Plan-G
-
►
Open F.I.R. -
►
Plan-G -
►
Error when building a database: System does not support ‘Windows-1252’ encoding