Въпрос за DateTime.Now и Regional Settings


2

Здравейте,

Курс C# Fundamentals, лекция 1, задача "7.Create a console application that prints the current date and time." :

Кода ми е:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _07CurrentDateTime
{
    class CurrentDateTime
    {
        static void Main(string[] args)
        {
            Console.WriteLine(DateTime.Now);
        }
    }
}
 
 
Имам обаче следния проблем - тъй като в настройките на Windows -> Region -> Formats за Format ми е Bulgarian, output-а ми на програмата е следния:
 
1.11.2012 ?. 0:53:58
 
демек не може да изпише г.-то и го замества с питанка. Може ли да кажете какво трябва да се направи, че да му се каже да encode-ва в Unicode или ако не е това проблема, какво трябва да се направи, за да излиза нормално. Благодаря предварително.



Отговори



2
using System.Text;
Console.OutputEncoding = Encoding.Unicode;
Това се слага за да е приложението в Unicode, но трябва да видиш и дали в регионалните настройки Region and Language -> Administrative за Non-Unicode Programs дали ти е избрано Bulgarian.
Ако ползваш Windows XP обаче това най-вероятно няма да е достатъчно.

от atodorova (1273 точки)


0
Ще иска инсталационния диск ако е с ХР и рестарт. Иначе името на опцията е същата!

от stoyanov (2483 точки)

0
Здравейте,
Извинявам се за закъснението. С
Console.OutputEncoding = Encoding.Unicode;
стана без да променям locale-то, което ми е Bulgarian. Според мен така е правилно, от гледна точка, че програмата, която пишеш не знаеш на какви машини ще се изпълняша и съответно трябша да е универсално решение (както в случая), а не просто нещо, кеото решава проблема с моята машина конкретно (а именно смяната на locale-то).

от AlexPopov (1568 точки)


0

Пробвай това:

http://stackoverflow.com/questions/5910573/how-to-get-cmd-console-encoding-in-c-sharp

Не знам дали работи


от saykor (8845 точки)


0
Това е заради кирилицата.
Пробвай Control Panel -> Clock, Language, and Region -> Region ans Language -> tab Administrative -> Language for non-Unicode programs -> Bulgarian
Изисква рестарт!

от yan_genov (20 точки)


0

Използвай това:
DateTime.Now.ToString("dd-MMMM-yyyy", CultureInfo.InvariantCulture );