問題が発生しました。のは、見てみましょう: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"}" => ęę
あなたのご意見ありがとうございました。
缶をグーグルという方法は何をすべきかを知らない場合は、スクリプト
.encode "UTF-8" #in case of Ruby language
のメソッドを経由して、それをエンコードしてみてくださいこれらを違う方法で呼び出す方法について説明します。 powershellはどこに正確に収まるのですか? – briantist私は編集しました。 Powershellの出力はpowershellの出力です。 – Serian
FYI:UTF-8では、 ''ę "'の16進コードは '0x119'です。 '" \ u {00A9} "は' '' '' 'です。あなたのパワーシェルはCP852(こんにちは、窓!)で働いているようです – mudasobwa