2013-04-18 6 views
15

メモ帳の++(「エンコード」メニューのドロップダウン)に「ANSI」と表示されている.txtの束があります。Notepad ++が単に "ANSI"と呼んでいるエンコーディングは誰にでもRubyの呼び出し方法を知っていますか?

ドイツ語の文字が[ööüß]であり、Notepad ++で正しく表示されます。

しかし、私はそれらがFile.read 'this is a German text example.txt'のときにirbに表示されません。

だから誰でも私が与えなければならない議論を知っていますEncoding.default_external=

(私は右、解決策になるだろうと仮定している?)

'utf-8'または'cp850'、それは「\ xE4 \ XF6 \ XFCとしての "äöüß" と "ANSI" ファイルを読み込み\ XDF」(あなたの答えに明らかに 『物事を...

明らかに言及することを躊躇しないでください』;。私はあなたがすることと、まだこの質問をするだけでは十分に知ることができるようnewbishとしてはかなりよ)

+0

それはあなたのOSのロケールに依存します。ドイツ語または英語については、Windows-1252です。メモ帳++はこれに従わないかもしれませんが、Windows-1252のエイリアスとしてだけ使用します。確かにISOエンコーディングはありません。 http://en.wikipedia.org/wiki/Windows_ANSI_code_page#ANSI_code_page – Esailija

+0

を参照してくださいありがとう、私はそれがcp1252だったと思います。 –

答えて

10

おそらくISO/IEC 8859-1(別名Latin-1)、ISO-8859-1、ISO/IEC 8859-15(別名Latin-9)またはWindows-1252(別名CP 1252)です。それらの4つはすべて0xE4äを持っています。

+1

ありがとう、私はそれがcp1252だったと思います。 –

3

「cp1252」、別名「windows-1252」だと思います。

イェルクの答えを読んだ後、私はruby-doc.org彼が言及した特定のエンコーディングへの参照を見つけることを試みるに戻っ Encodingページから行って、私は Encodings.aliases方法を見つけたときです。

私はこの答えの最後に方法をkludgedしました。

その後、私は「ANSI」とUTF-8の両方としてそれを見て、++メモ帳で出力を見て、とのirbで出力することを比較して...

私はIRB出力に二つの場所を見つけることができますutf-8ファイルは「ANSI」と表示されたときと全く同じ方法で文字化けしました。これらの場所はcp1252とcp1254のものでした。

cp1252は明らかに私の 'ファイルシステム'エンコーディングなので、私はそれに行くつもりです。

私はUTF-8年代に変換するすべてのファイルのコピーを作成するためのスクリプトを書いて、1252年および1254

から両方しようとしてUTF-8正規表現は、これまでのファイルの両方のセットで動作するように見えます。

今私は実際に何をしようとしていたのかを覚えておいてください。になります。 xD

def compare_encodings file1, file2 
    file1_probs = [] 
    file2_probs = [] 

    txt = File.open('encoding_test_output.txt','w') 

    Encoding.aliases.sort.each do |k,v| 
     Encoding.default_external=k 
     ename = [k.downcase, v.downcase].join " --- " 
     s = "" 
     begin 
      s << "#{File.read(file1)}" 
     rescue 
      s << "nope nope nope" 
      file1_probs << ename 
     end 
     s << "\t| #{ename} |\t" 
     begin 
      s << "#{File.read(file2)}" 
     rescue 
      s << "nope nope nope" 
      file2_probs << ename 
     end 
     Encoding.default_external= 'utf-8' 
     txt.puts s.center(58) 
     puts s.center(58) 
    end 
    puts 
    puts "file1, \"#{file1}\" exceptions from trying to convert to:\n\n" 
    puts file1_probs 
    puts 
    puts "file2, \"#{file2}\" exceptions from trying to convert to:\n\n" 
    puts file2_probs 
    txt.close 
end 

compare_encodings "utf-8.txt", "np++'ANSI'.txt" 
5

この質問に対する答えは、Notepad ++フォーラムで、2010年には正式なCChrisによって回答されました。

Question: Encoding ANSI?

回答:

コンピュータ(コード・ページ0)のためのシステムコードページになります。

詳細:

あなたの現在のコードページを表示します。

>help chcp 
Displays or sets the active code page number. 

CHCP [nnn] 

    nnn Specifies a code page number. 

Type CHCP without a parameter to display the active code page number. 

>chcp 
Active code page: 437 

Code Page Identifiers

Identifier .NET Name Additional information 
437   IBM437  OEM United States 
関連する問題