2013-04-18 4 views
15

Ich habe eine Reihe von .TXT, die Notepad ++ sagt (in der Dropdown-Menü "Encoding") sind "ANSI".Die Codierung, die Notepad ++ nur "ANSI" aufruft, weiß jemand, wie man es für Ruby nennt?

Sie haben deutsche Zeichen in ihnen, [äöüß], die gut in Notepad ++ anzeigen.

Aber sie erscheinen nicht direkt in irb wenn ich File.read 'this is a German text example.txt' sie.

Also weiß jemand, welches Argument ich geben sollte Encoding.default_external=?

(Ich gehe davon aus, dass die Lösung sein würde, nicht wahr?)

Wenn 'utf-8' oder 'cp850', die "ANSI" Datei mit "äöüß" darin als „\ XE4 \ XF6 \ xFC \ liest XDF“...

(Bitte zögern Sie nicht, anscheinend ganz zu schweigen‚offensichtlich‘Dinge in Ihren Antworten;. ich ziemlich viel wie newbish bin, wie Sie sein können und wissen immer noch gerade genug, um diese Frage zu stellen)

+0

Es hängt von Ihrem OS locale. Für Deutsch oder Englisch ist es Windows-1252. Notepad ++ folgt diesem möglicherweise nicht und verwendet es nur als einen Alias ​​für Windows-1252. Es ist keine ISO-Codierung für sicher. Siehe http://en.wikipedia.org/wiki/Windows_ANSI_code_page#ANSI_code_page – Esailija

+0

Danke, ich denke es war cp1252, ja. –

Antwort

10

Was sie meinen, ist wahrscheinlich ISO/IEC 8859-1 (alias Latin-1), ISO-8859-1, ISO/IEC 8859-15 (alias Latin-9) oder Windows-1252 (aka CP 1252). Alle 4 von ihnen haben die ä an Position 0xE4.

+1

Danke, ich denke es war cp1252, yeah. –

3

Ich denke, es ist 'cp1252', Alias ​​'Windows-1252'.

Nachdem ich Jörgs Antwort gelesen hatte, ging ich zurück auf die Seite Encoding auf ruby-doc.org, um Verweise auf die spezifischen Kodierungen zu finden, die er erwähnte, und da entdeckte ich die Encodings.aliases Methode.

Also kludged ich die Methode am Ende dieser Antwort.

Dann sah ich am Ausgang in Notepad ++, es sowohl als ‚ANSI‘ sehen und utf-8, und im Vergleich, dass mit dem Ausgang in irb ...

ich nur zwei Plätze in der irb Ausgabe finden konnte, wo die utf-8-Datei genau so entstellt wurde, wie sie in notepad ++ auftauchte, wenn sie als 'ANSI' angezeigt wurde, und diese Stellen waren für cp1252 und cp1254.

cp1252 ist anscheinend meine "Dateisystem" -Kodierung, also gehe ich damit.

schrieb ich ein Skript Kopie aller Dateien auf utf-8 umgewandelt zu machen, die beide von 1252 und 1254.

utf-8 Regexes scheint bisher mit beiden Sätzen von Dateien zu arbeiten versucht.

Jetzt muss ich versuchen, mich daran zu erinnern, was ich eigentlich versuchte zu erreichen, bevor ich in all diese Codierung Kopfschmerzen lief.

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

fand ich die Antwort auf diese Frage auf dem Notepad ++ Forum, beantworten im Jahr 2010 von CChris der autoritative zu sein scheint.

Question: Encoding ANSI?

Antwort:

Das wird die System-Codepage für Ihren Computer (Codepage 0) sein.

Mehr Info:

Zeigen Sie Ihre aktuelle Codepage.

>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 
Verwandte Themen