25061Fermer25063
WarptenLe 16/02/2013 à 14:45
./25060 Même avec ça (J'ai chercé pendant deux bonnes heures avant de me tourner vers WinAPI), ça renvoie null:

        static void Main(string[] args)
        {
            Console.InputEncoding = Encoding.UTF8;
            Console.OutputEncoding = Encoding.UTF8;
            string message = Console.ReadLine(); // Tape un accent au milieu.
            Console.WriteLine(message); // Boom, il suffit de s'en rendre compte via le débuggeur.
        }


Même en forçant une font utf8-friendly (Consolas), et en tapant "chcp 65001" (UTF8) avant, ReadLine n'aime pas les accents. Je suppose qu'il essaie de lire de l'ASCII ou de l'Unicode en interne...

http://connect.microsoft.com/VisualStudio/feedback/details/652017/bcl-reading-unicode-input-from-console-not-supported
http://stackoverflow.com/questions/7939643/how-do-i-read-special-characters-0x80-0x9f-from-the-windows-console-in-c

[EDIT] Ouais, elle lit en Unicode même si tu forces l'UTF8, donc j'ai fait un Encoding.Convert(...) crado, ça passe pour le moment, sans winapi (Même si bizarrement maintenant ça bloque stdout...)

Encoding.UTF8.GetString(Encoding.Convert(Encoding.Unicode, Encoding.UTF8, Encoding.Unicode.GetBytes(Console.ReadLine())))

Et oui, je suis en .NET 4.5...