2016-05-04 7 views
0

問題が発生しました。のは、見てみましょう:Ruby互換のエラーコード

C:\ tempに>ルビー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}"   => ęę 

のPowerShellの入力はルビーやメモ帳++よりも、すべての特殊文字のために他のフォントを使用していますように見えます(?)。私はそれを変更することができますので、私はプロンプトで(入力されたときに)入力し、エラーを表示しませんか?

編集:間違っていると申し訳ありません。私は呼び出しを追加し、そのファイルに拡張子 ".rb"が ".txt"ではないことを指定しました。
Edit2:これ以上の情報を調べましたが、私はいくつかのエンコーディング(UTF8)を行いました。奇妙なことが起こった。

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

CP852へのエンコードでは、エンコードがバイト単位で行われることが判明しています。私は、 "ę" = 20 + 99 = 119、 "±" = 20 + 85、20 = C4の価値を学んだ。

.encoding " - 私が使っているエンコーディングを示しています。そしてそれがこの問題を解決します。

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

あなたのご意見ありがとうございました。

+0

缶をグーグルという方法は何をすべきかを知らない場合は、スクリプト.encode "UTF-8" #in case of Ruby languageのメソッドを経由して、それをエンコードしてみてくださいこれらを違う方法で呼び出す方法について説明します。 powershellはどこに正確に収まるのですか? – briantist

+0

私は編集しました。 Powershellの出力はpowershellの出力です。 – Serian

+0

FYI:UTF-8では、 ''ę "'の16進コードは '0x119'です。 '" \ u {00A9} "は' '' '' 'です。あなたのパワーシェルはCP852(こんにちは、窓!)で働いているようです – mudasobwa

答えて

0

(CMDまたはPowerShellのいずれか)プロンプトでのご入力は貴様のエンコーディングを使用しての非互換性に起因する問題を引き起こしている場合は、単にあなただけのyour_language_name encoding