Код запиту:
using System;
using System.Text;
class Program {
static void Main(string[] args) {
var infinity = "\u221e";
Console.OutputEncoding = Encoding.GetEncoding(1252);
Console.WriteLine(infinity);
Console.ReadLine();
}
}
Сторінка коду 1252 - це досить поширена випадкова ситуація в Англії, оскільки вона є кодовою сторінкою Windows за замовчуванням. Як це стосується Західної Європи та Америки. Дуже багато причин, щоб змінити властивість Console.OutputEncoding за замовчуванням програмно, багато текстових файлів будуть закодовані у 1252 році. Або з командного рядка, набравши chcp 1252
(chcp == зміна кодової сторінки) перед запуском програми.
Як ви можете зрозуміти з набору символів, який підтримується 1252, символ Infinity недоступний. Отже, Encoding повинен придумати заміну. Це часто ?
гліф для непідтримуваних кодових точок Unicode, значення властивості Encoding.EncoderFallback для 8-бітових кодувань. Але на 1252 рік та застарілі кодові сторінки MS-Dos 850 та 858 програміст Microsoft вирішив 8
. Смішний хлопець.
Гліф це підтримується в звичайній кодової сторінки для консольних додатків на західній машині. Що становить 437, відповідає застарілому набору символів IBM . Наявність такого роду катастрофічних катастроф є причиною створення Unicode. На жаль, занадто пізно, щоб врятувати консольні програми, занадто багато коду, який покладався на кодову сторінку MS-Dos за замовчуванням.
Перетворення Double.PositiveInfinity в "∞" характерне для Win10. Раніше це було "Нескінченність" у попередніх версіях Windows. Такі формати зазвичай можна змінювати за допомогою Панелі управління> Мова> Змінити формати дати, часу чи числа> Кнопка додаткових налаштувань, але вибір символу нескінченності не включений у діалогове вікно. Крім того, не охоплений реєстром (HKCU \ Control Panel \ International), досить великий нагляд. LOCALE_SPOSINFINITY у рідних винах. У програмі .NET ви можете її змінити програмно, клонувавши CultureInfo та змінивши його властивість NumberFormatInfo.PositiveInfinitySymbol. Подобається це:
using System;
using System.Text;
using System.Threading;
using System.Globalization;
class Program {
static void Main(string[] args) {
Console.OutputEncoding = Encoding.GetEncoding(1252);
var ci = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
ci.NumberFormat.NegativeInfinitySymbol = "-Infinity";
ci.NumberFormat.PositiveInfinitySymbol = "And beyond";
Thread.CurrentThread.CurrentCulture = ci;
Console.WriteLine(1 / 0.0);
Console.ReadLine();
}
}
∞
це знак нескінченності. просто переверніть його на 90 градусів, щоб побачити його 8