2016-05-04 17 views
0

Ich habe ein Problem. Schauen wir uns:Ruby-Kompatibilität Fehler Codierung

C: \ temp> Rubin 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}"   => ęę 

Es sieht aus wie Eingabe des Powershell für alle Sonderzeichen als Rubin andere Schriftart verwendet und Notepad ++ (?). Kann ich das ändern, so dass es funktioniert, wenn ich Eingabeaufforderung eingabe (wenn gefragt) und keinen Fehler anzeigt?

Edit: Sorry für die Irreführung. Ich habe invoke hinzugefügt und angegeben, dass die Datei die Erweiterung ".rb" hat nicht ".txt"
Edit2: Ok, ich habe einige weitere Informationen recherchiert und ich habe versucht, einige Codierung (UTF8) zu einer Variablen. Etwas Seltsames ist passiert.

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

Codierung zu CP852 hat ergeben, dass die Codierung Bytes weitergeben. Ich habe gelernt, dass der Wert von "ê" = 20 + 99 = 119, "±" = 20 + 85, 20 = C4

Ok. habe es ".encoding" - zeigt, welche Codierung ich verwende. Und das löst dieses Problem.

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

Vielen Dank für Ihre Eingabe.

+0

Google kann Sie erklären, wie Sie diese anders aufrufen? Wo passt Powershell genau? – briantist

+0

Ich habe bearbeitet. Unter Powershell-Ausgabe ist Powershell-Ausgabe. – Serian

+0

FYI: In UTF-8 ist der Hexadezimalcode von '" ê "' '0x119'. '" \ u {00A9} "' ist '" © "'. Ihre Powershell scheint in CP852 zu funktionieren (Hallo, Windows!) – mudasobwa

Antwort

0

Wenn Sie Ihre Eingabe in Eingabeaufforderung (entweder cmd oder Powershell) verursacht Probleme aufgrund der Inkompatibilität von Codierungen nur differents mit versuchen, es in Skript .encode "UTF-8" #in case of Ruby language über Methoden zur Kodierung Wenn Sie nicht wissen, welche Methoden sie nur, dass your_language_name encoding

Verwandte Themen