Windows, PowerShell, Ruby et les accents

2012-12-18 #ruby

Depuis que j'essaie de faire du Ruby, j'ai toujours eu des problèmes avec les caractères accentués du français.

Pour Sinatra, il y a eu le jour où je ne sais plus quelle version a résolu le problème grâce à la célèbre ligne "# encoding: UTF-8" en début de fichier :)

Mais pour les applications "console" ou les tests sous IRB, rien à faire :

Windows PowerShell
Copyright (C) 2012 Microsoft Corporation. Tous droits réservés.

C:\Users\michel> cd C:\Ruby

C:\Ruby> irb
irb(main):001:0> str = "Réel"
=> "R\x82el"
irb(main):002:0>

Et ce soir je suivais les exemples de String in Ruby pour les développeurs C# et j'en ai eu marre de devoir me priver des accents.

Alors j'ai cherché "Windows Ruby caractères français"... Mais bon, il faut se rendre à l'évidence. Tout le monde s'accorde pour dire que la version 1.9.3 (1.9.x ?) de Ruby gère très bien les accents.

Bon. Ok. Le problème vient de Windows. "PowerShell caractère français" ? De liens en liens j'arrive sur la page $OutputEncoding to the rescue (j'ai un peu perdu le fil des liens qui m'y a conduit, mais merci à eux).

Et il est là, dans le dernier commentaire, comme une dernière chance :

chcp 1250

Et ce 1250 me rappelle mes années Windows-1252 (sous ASP3 je crois).

Je lance une énième tentative :

C:\Ruby> chcp 1252
Page de codes active : 1252

C:\Ruby> irb
irb(main):001:0> str = "Réel"
=> "Réel"

Ça marche !!!

Je vérifie :

irb(main):002:0> str.each_char.map { |c| c }
=> ["R", "é", "e", "l"]

Et pour le plaisir :

irb(main):003:0> __ENCODING__
=> #<Encoding:Windows-1252>

Ruby sous Windows c'est génial !