Ich habe mir die anderen Ruby/Encoding-bezogenen Beiträge angeschaut, konnte aber nicht herausfinden, warum das Folgende nicht funktioniert. Wahrscheinlich nur, weil ich dicht bin, aber hier ist die Situation.Ruby string encoding problem
Verwenden von Ruby 1.9 auf Windows. Ich habe eine Reihe von CSV-Dateien, die einige Daten am Ende jeder Zeile angehängt werden müssen. Immer wenn ich mein Skript ausführe, sind die angehängten Zeichen Kauderwelsch. Der Eingabetext scheint IBM437-Codierung zu sein, während meine Zeichenfolge, die ich angehängt habe, als US-ASCII beginnt. Nichts, was ich in Bezug auf das Erzwingen der Codierung für die Eingabezeichenfolgen oder die Anhangszeichenfolge versucht hat, scheint die resultierende Ausgabe zu ändern. Ich bin ratlos. Die aktuelle Kodierungsversion ist einfach die letzte, die ich ausprobiert habe.
def append_salesperson(txt, salesperson)
if txt.length > 2
return txt.chomp.force_encoding('US-ASCII') + %(, "", "", "#{salesperson}")
end
end
salespeople = Hash[
"fname", "Record Manager"]
outfile = File.open("ActData.csv", "w:US-ASCII")
salespeople.each do | filename, recordManager |
infile = File.open("#{filename}.txt")
infile.each do |line|
outfile.puts append_salesperson(line, recordManager)
end
infile.close
end
outfile.close
Verwenden Sie den magischen Codierungskommentar in Ihrem Skript? – kch