Xmlexception system does not support windows 1251 encoding

Выдает ошибку: System.Xml.XmlException: "System does not support 'windows-1251' encoding. Как раскодировать? string URLXml = "http://сайт.ru/file.xml"; XmlReaderSettings settings ...

Выдает ошибку:

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's user avatar

aepot

42.2k5 золотых знаков17 серебряных знаков48 бронзовых знаков

задан 14 июл 2020 в 9:48

badcoder's user avatar

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 Petrov's user avatar

Alexander PetrovAlexander Petrov

28.4k5 золотых знаков26 серебряных знаков53 бронзовых знака

1

Encoding encoding = Encoding.GetEncoding("windows-1251");

ответ дан 14 июл 2020 в 11:58

rabbit's user avatar

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 Khabinsky's user avatar

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.


  1. Home


  2. Software Programming


  3. 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
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

GENDALF_ISTARI

15 / 32 / 19

Регистрация: 20.08.2013

Сообщений: 740

1

10.06.2018, 20:36. Показов 5025. Ответов 13

Метки regex, xml, регулярное выражение (Все метки)


Регулятор выражение xml

Тема пойдет о регуляторе выражения
без парсинга, причина почему парсинг не нужен
из за того что парсинг требует загрузки документа XML
я не хочу использовать парсинг , и xml
потому что его нужно загружать локально
а это не приемлемо
xml получаеться запросом чтения HttpWebRequest, мне он не нужен локально
для этого годиться и так понятно регулятор выражения

Сам XML таков и он идет с повторениями

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<Vomon name="Kimono">
<Generation ID="BNO11">
  <Homepod>036</Homepod>
  <NameCoding>GHOP</NameCoding>
  <Stringstr>6</Stringstr>
  <Name>Нобелий</Name>
  <Value>56,23</Value>
</Generation>
<Generation ID="FGPO">
  <Homepod>016</Homepod>
  <NameCoding>HONO</NameCoding>
  <Stringstr>678</Stringstr>
  <Name>Титан</Name>
  <Value>01,0000</Value>
</Generation>
<Generation ID="DJKP">
  <Homepod>006</Homepod>
  <NameCoding>TION</NameCoding>
  <Stringstr>123</Stringstr>
  <Name>Курчатов</Name>
  <Value>11,2222</Value>
</Generation>
<Generation ID="23BGH">
  <Homepod>002</Homepod>
  <NameCoding>SOME</NameCoding>
  <Stringstr>67</Stringstr>
  <Name>Ураниум</Name>
  <Value>11,1111</Value>
</Generation>
<Generation ID="100FG">
  <Homepod>001</Homepod>
  <NameCoding>TOKE</NameCoding>
  <Stringstr>12</Stringstr>
  <Name>Селен</Name>
  <Value>12,5456</Value>
</Generation>
</Vomon>
C#
1
2
3
4
/ Регулярное выражение
string pattern = $"";
// Вытаскиваем из XML-кода нужные данные
Match match = Regex.Match(xml, pattern);

думаю понятно мне нужно найти допустим SOME , или GHOP
и не просто найти их , а получить значение тегов их
начиная с куска

XML
1
<Generation ID="100FG">  //Все внутри    </Generation>

вывести каждое значение тега

C#
1
2
3
4
5
6
Console.WriteLine($"Group 0: {match.Groups[0].ToString()}");
            Console.WriteLine($"Group 1: {match.Groups[1].ToString()}");
            Console.WriteLine($"Group 2: {match.Groups[2].ToString()}");
            Console.WriteLine($"Group 3: {match.Groups[3].ToString()}");
            Console.WriteLine($"Group 4: {match.Groups[4].ToString()}");
            Console.WriteLine($"Group 5: {match.Groups[5].ToString()}");

Я разбирался с ним
вроди должно быть так

C#
1
string pattern ="^<Generation ID="

читает из начально а как (….) вот тут мостить не могу в голове представить
может так

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Lexeq

1146 / 738 / 483

Регистрация: 21.01.2014

Сообщений: 1,903

10.06.2018, 22:03

2

C#
1
Match match = Regex.Match(xml, pattern);

А в переменной xml разве не загруженный xml хранится?



1



Someone007

Эксперт .NET

6269 / 3897 / 1567

Регистрация: 09.05.2015

Сообщений: 9,188

10.06.2018, 22:44

3

Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

Цитата
Сообщение от GENDALF_ISTARI
Посмотреть сообщение

причина почему парсинг не нужен
из за того что парсинг требует загрузки документа XML
я не хочу использовать парсинг , и xml
потому что его нужно загружать локально

Чего? Вы хоть сами поняли что написали?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            HttpWebRequest req = WebRequest.CreateHttp("http://something/somewhere/123.xml");
 
            using (var resp = req.GetResponse())
            using (var stream = resp.GetResponseStream())
            {
                XDocument doc = XDocument.Load(stream);
 
                foreach (var xe in doc.Root.Elements("Generation"))
                {
                    Console.WriteLine(xe.Attribute("ID").Value);
                    Console.WriteLine(xe.Element("Homepod").Value);
                    Console.WriteLine(xe.Element("NameCoding").Value);
                    Console.WriteLine(xe.Element("Stringstr").Value);
                    Console.WriteLine(xe.Element("Name").Value);
                    Console.WriteLine(xe.Element("Value").Value);
                    Console.WriteLine();
                }
            }



1



GENDALF_ISTARI

15 / 32 / 19

Регистрация: 20.08.2013

Сообщений: 740

10.06.2018, 22:45

 [ТС]

4

я же говорю обычно xmldoc.Load(«файл.xml»);
он локальный должен быть как файл, и грузиться
дальше xml element attribut и так далее,
в моем случаи я получаю строку из HttpWebRequest

можно запелить созданием самого файла xml пихнуть все содержимое туда
и дальше xmldoc.Load читать и вытаскивать
но это не выгодное действие

проще регулятором сразу считать кусок
и так

C#
1
2
3
string pattern ="(<Homepod>036</Homepod>)(<NameCoding>GHOP</NameCoding>)"
match.Groups[0].ToString() //сответствует одной групе
match.Groups[1].ToString() //сответствует второй групе

все это хорошо
но как найти значение GHOP
и запихнуть по групам значение их

XML
1
2
3
4
5
6
7
<Generation ID="BNO11">
  <Homepod>036</Homepod>
  <NameCoding>GHOP</NameCoding>
  <Stringstr>6</Stringstr>
  <Name>Нобелий</Name>
  <Value>56,23</Value>
</Generation>



0



Эксперт .NET

6269 / 3897 / 1567

Регистрация: 09.05.2015

Сообщений: 9,188

10.06.2018, 22:47

5

Цитата
Сообщение от GENDALF_ISTARI
Посмотреть сообщение

я же говорю обычно 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

Вообще когда

C#
1
2
3
4
5
6
 HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)await myHttpWebRequest.GetResponseAsync();
 
            using (var stream = myHttpWebResponse.GetResponseStream())
            {
                XDocument doc = XDocument.Load(stream);

выдает ошибку



0



Эксперт .NET

6269 / 3897 / 1567

Регистрация: 09.05.2015

Сообщений: 9,188

10.06.2018, 23:08

9

Цитата
Сообщение от GENDALF_ISTARI
Посмотреть сообщение

выдает ошибку

Какую? У меня пример из поста выше с вашим xml и моим локальным сервером отработал без ошибок.



1



15 / 32 / 19

Регистрация: 20.08.2013

Сообщений: 740

10.06.2018, 23:17

 [ТС]

10

The string was not recognized as a valid Uri.
Parameter name: inputUri

at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext)
at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings)
at System.Xml.Linq.XDocument.Load(String uri, LoadOptions options)
at System.Xml.Linq.XDocument.Load(String uri)
at ConsoleApp1_Regex.Program.<WR_ADD>d__1.MoveNext()

Добавлено через 2 минуты
дальше если поток использую
то вот так

System does not support ‘windows-1251’ encoding. Line 1, position 31.

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(B oolean isTextDecl)
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
at System.Xml.Linq.XDocument.Load(Stream stream, LoadOptions options)
at System.Xml.Linq.XDocument.Load(Stream stream)
at ConsoleApp1_Regex.Program.<WR_ADD>d__1.MoveNext()



0



Эксперт .NET

6269 / 3897 / 1567

Регистрация: 09.05.2015

Сообщений: 9,188

10.06.2018, 23:26

11

Цитата
Сообщение от GENDALF_ISTARI
Посмотреть сообщение

System.Xml.Linq.XDocument.Load(String uri)

Принимает адрес, по которому находится xml, а вы видимо что-то не то передали (сам xml, вместо адреса?).

Цитата
Сообщение от GENDALF_ISTARI
Посмотреть сообщение

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

Эксперт .NET

6269 / 3897 / 1567

Регистрация: 09.05.2015

Сообщений: 9,188

10.06.2018, 23:35

13

Можно еще такой вариант попробовать

C#
1
2
3
4
5
6
7
8
9
HttpWebRequest req = WebRequest.CreateHttp("http://localhost:8000/1.xml");
            
using (var resp = req.GetResponse())
using (var stream = resp.GetResponseStream())
using (var reader = new StreamReader(stream, Encoding.UTF8)) // тут проверить разные кодировки вместо UTF8
{
    XDocument doc = XDocument.Load(reader);
    // ...
}



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() туда-сюда.

confguru


  • #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 выводится нормально?

confguru


  • #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
не надо спамить в старые темы

@zrhyvr

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.

@ellismg

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.

@zrhyvr

@msftgits
msftgits

transferred this issue from dotnet/corefx

Jan 31, 2020

@msftbot
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

Понравилась статья? Поделить с друзьями:
  • Xml скачать программу бесплатно для windows 10
  • Xml interface xerox 3100 драйвер windows 10
  • Xming x server for windows 10 скачать с официального сайта
  • Xmeye для компьютера windows 7 скачать бесплатно на русском
  • Xmeye для windows скачать официальный сайт на русском языке