Código de compatibilidad de Ruby encoding

Estoy teniendo un problema. Miremos:

C: \ temp> ruby ​​script.rb

script.rb => Powershell output puts "ę" => ę #irb \xA9 puts "\xA9" => ▯ puts "ę"=="\xA9" => false input = $stdin.gets.chomp => input=="ę" puts "e#{input}e" => eęe puts "ę"==input => false puts "ę#{input}" => Encoding::Compatibility Error Utf8 & CP852 irb => #command line in ruby puts "ę"=="\xA9" => true input = $stdin.gets.chomp => input=="ę" puts "ę"==input => true && "\xA9"==input => true puts "ę#{input}" => ęę 

Parece que la entrada de powershell usa otra fuente para todos los caracteres especiales que ruby ​​y notepad ++ (?). ¿Puedo cambiar eso para que funcione cuando escribo el indicador (cuando se me pregunta) y no muestra un error?

Edición: Perdón por desorientación. Agregué invocar y especifiqué que el archivo tiene la extensión “.rb” no “.txt”
Edit2: Ok, he investigado un poco más de información y he estado intentando hacer un poco de encoding (UTF8) a una variable. Algo extraño ocurrió.

 puts "ę#{input.encoding}" => ęCP852 puts "\xA9" => UTF-8 

La encoding a CP852 ha revelado que la encoding pasa en bytes. Aprendí que el valor de “ê” = 20 + 99 = 119, “ą” = 20 + 85, 20 = C4

De acuerdo. lo tengo “.encoding” – muestra qué encoding uso. Y eso resuelve este problema.

 puts "ę#{input.encode "UTF-8"}" => ęę 

Gracias a todos por sus comentarios.

Si su entrada en prompt (ya sea cmd o powershell) está causando problemas debido a la incompatibilidad del uso de diferentes codificaciones, intente codificarla a través de los métodos en el script. .encode "UTF-8" #in case of Ruby language Si no sabe qué métodos realiza que acaba de google your_language_name encoding

    Intereting Posts