同时xml文件似乎在Windows Os上以utf-8格式编码(在NotePad ++中可见),输出该文件的某些内容,将ascii-8bit读取,严重地返回了输出文件。
xml = Ox.load_file(ENV["HOME"] + '/desktop/sample.xml', mode: :generic, with_xml: true )
outcsv=[]
string = xml.FOO.BAR.text
outcsv.push(string)
outcsv.push( "Default external: #{Encoding.default_external.inspect}" )
outcsv.push( "Default internal: #{Encoding.default_internal.inspect}" )
outcsv.push( "Locale charmap: #{Encoding.locale_charmap.inspect}" )
outcsv.push( "LANG environment variable: #{ENV['LANG'].inspect}" )
p outcsv.count
def exportCsv (arr) #{{{
outcsvpath = ENV['HOME'].to_s+'/desktop/out.csv'
f = File.new(outcsvpath, File::RDWR|File::CREAT, 0644)
arr.each { |row|
f.puts(row.to_s.force_encoding('cp1252').encode('utf-8')) #iso-8859-1
}
f.close()
end #}}}
xml输入:
当前dernièrevérification底部文字
输出文本行和默认编码:
> Présent dernière vérification
> Default external: #<Encoding:UTF-8>
> Default internal: nil
> Locale charmap: "CP1252" LANG environment
> variable: "FR"
Windows 10和示例在这里:https://drive.google.com/open?id=1Ahtw6MiiN5uG_8-6GdaqQf4M7Hc9r61g
似乎可以使用此代码:
require 'ox'
#Encoding.default_external = Encoding.find('utf-8')
#Encoding.default_internal = Encoding.find('utf-8')
# 1. Xml Generic Mode
xml = Ox.load_file(ENV["HOME"] + '/desktop/sample.xml', mode: :generic, with_xml: true )
outcsv=[]
string = xml.FOO.BAR.text
outcsv.push( string )
outcsv.push( "Default external: #{Encoding.default_external.inspect}" )
outcsv.push( "Default internal: #{Encoding.default_internal.inspect}" )
outcsv.push( "Locale charmap: #{Encoding.locale_charmap.inspect}" )
outcsv.push( "LANG environment variable: #{ENV['LANG'].inspect}" )
p outcsv.count
def exportCsv (arr) #{{{
outcsvpath = ENV['HOME'].to_s+'/desktop/out.csv'
f = File.new(outcsvpath, File::RDWR|File::CREAT, 0644)
arr.each { |row|
f.puts(row.to_s) #.force_encoding('Windows-1252').encode('utf-8')) #iso-8859-1
}
f.close()
end #}}}