`
blessdyb
  • 浏览: 236596 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ruby 使用csv读取文件问题

阅读更多

data.txt文件内容如下[文件编码为utf-8]

张三,12,m
李四,22,f

readdata.rb文件内容如下

File.readlines("data.txt").each do |line|
    puts line
end

在控制台下得到的结果正常

 

readdata_csv.rb文件内容如下

 

require 'csv'

CSV.open("data.txt","r").each do |person|
    puts person.inspect
end

在控制台下得到的结果中文乱码

["\345\274\240\344\270\211", "12", "m"]
["\346\235\216\345\233\233", "22", "f"]

 

如果将代码改为

 

require 'csv'

people=CSV.parse(File.read('data.txt'))
puts people
 

此时得到的结果正常,比较困惑。

分享到:
评论
1 楼 blessdyb 2011-03-07  
<div class="quote_title">blessdyb 写道</div><div class="quote_div"><p>data.txt文件内容如下[文件编码为utf-8]<br><br>张三,12,m<br>李四,22,f<br><br>readdata.rb文件内容如下</p>
<pre name="code" class="ruby">File.readlines("data.txt").each do |line|
    puts line
end</pre>
<p>在控制台下得到的结果正常</p>
<p> </p>
<p>readdata_csv.rb文件内容如下</p>
<p> </p>
<pre name="code" class="ruby">require 'csv'

CSV.open("data.txt","r").each do |person|
    puts person.inspect
end</pre>
<p>在控制台下得到的结果中文乱码</p>
<p>["\345\274\240\344\270\211", "12", "m"]<br>["\346\235\216\345\233\233", "22", "f"]</p>
<p> </p>
<p>如果将代码改为</p>
<p> </p>
<pre name="code" class="ruby">require 'csv'

people=CSV.parse(File.read('data.txt'))
puts people</pre>
 
<p>此时得到的结果正常,比较困惑。</p></div><br/>查了一下,引入jcode这个库就正常了,读出来了\345....都是八进制的数字,转成16进制再转码就是原来的中亠了

相关推荐

    使用Ruby来处理文本的教程

    比如CSV(逗号分隔值),经常用来存储表格数据,Ruby提供了CSV模块来读取和写入CSV文件。在处理XML数据时,Ruby的REXML库能够解析和生成XML文档,支持XML数据的提取和操作。 总的来说,Ruby是处理文本数据的强大...

    csv导出大量数据

    - 编程语言:Python、Java、R、Ruby等编程语言都有库或内置函数支持CSV文件的读写,如Python的`pandas`库和`csv`模块。 5. 分块导出与流式处理 对于海量数据,可以采用分块导出,每次只处理一部分数据,减少内存...

    CSV librar——FasterCSV

    下面是一个简单的使用FasterCSV读取CSV文件的示例: ```ruby require 'fastercsv' # 读取CSV文件 FasterCSV.foreach("example.csv", :headers =&gt; true) do |row| # 'headers'选项将第一行视为列名 puts "Name: #...

    Ruby-此Gem将使您的AR模型能够使用PostgreSQLCOPY命令以CSV格式导入导出数据

    在描述中提到,这个Gem(Ruby中的库或模块)使得ActiveRecord模型能够利用PostgreSQL的COPY命令处理CSV(逗号分隔值)格式的数据。CSV是一种通用的数据交换格式,适合存储表格数据,如电子表格或数据库。通过这个Gem...

    fastcsv:快速的基于Ragel的CSV解析器,与Ruby的CSV兼容

    用法FastCSV.raw_parse用C实现,是使用FastCSV读取CSV的最快方法。 require 'fastcsv'# Read from file.File . open ( filename ) do | f | FastCSV . raw_parse ( f ) do | row | # do stuff endend# Read from an ...

    oGood start for ruby

    6. Excel文件处理:使用Ruby的CSV库或第三方库如Nokogiri进行Excel文件的数据读取和操作。 7. 开发工具:可能涉及到版本控制工具如Git,开发环境如RubyMine,或者构建工具如Bundler。 通过这些知识点的学习,初学者...

    mira:从CSV文件创建简单的API

    米拉Mira是Ruby on Rails应用程序,为您提供了一个用于CSV文件的简单HTTP API。概括您创建一个Mira项目。 一个项目只是一个或多个CSV文件以及datapackage.json文件的存放地。 现在更多... 通过将datapackage.json...

    Programming Ruby(读书笔记)-3章

    2. `csv_reader.rb`:这可能是一个Ruby脚本,用于读取并处理`data.csv`文件。它可能利用了Ruby的CSV库来解析和操作CSV数据。 3. `stock_stats.rb`:这个名字暗示了这个文件可能与股票相关的统计分析有关。它可能包含...

    copypastecsv:粘贴到 CSV 中,获取可共享的文件

    例如,我们可以使用`CSV.foreach`来逐行读取CSV文件,或者使用`CSV.open`创建新的CSV文件并写入数据。 ```ruby require 'csv' # 读取CSV文件 CSV.foreach('input.csv') do |row| puts row.inspect end # 写入CSV...

    ruby+watir 测试框架

    在Ruby中,可以使用如 Roo 这样的库来读取和操作Excel文件。Roo库支持多种文件格式,包括XLS、XLSX和CSV,使得测试人员能够方便地导入和导出测试数据。 例如,我们可以创建一个Excel文件,其中包含测试场景的详细...

    Ruby-Rails日志分析器查看您的视图渲染的速度

    可以使用Ruby的CSV库生成CSV文件,或者使用像Gnuplot这样的图形工具生成图表。 6. **性能优化**:基于分析结果,我们可以针对性地优化那些渲染时间过长的视图。可能的优化策略包括: - 使用更高效的模板语言,如...

    pojondec:pojondec! 波兰语是“清理!”。 只需导入CSV文件,它有助于跟踪所有类型的(银行)帐户

    1. **CSV处理**:Ruby 提供内置的 CSV 库,可以方便地读取、写入和解析CSV文件,这可能是 "pojondec" 的核心功能。 2. **数据清洗**:工具可能包含一系列方法来去除重复、错误或不一致的数据,确保财务记录的准确性...

    Ruby的数据处理和ETL框架_Ruby_下载.zip

    "source"负责从各种数据源(如数据库、CSV文件、甚至是网络API)读取数据;"transform"则执行数据清洗、转换或聚合操作;最后,"destination"将处理后的数据写入新的位置,如另一个数据库、文件或云存储。 以下是...

    Ruby语言规范

    - **高级注释**:对于类、模块或公共方法,推荐使用RDoc风格的注释,以便于文档生成工具读取。 **示例**: ```ruby # 将逗号分隔的字符串 `str` 分割并返回结果数组。 def split_csv(str) return str.split(/,/) ...

    Ruby gem,用于从PDF中提取表作为结构化信息-Ruby开发

    使用此PDF文件:使用此代码:pages = Iguvium.read('filename.pdf')表格= pages [1] .extract_tables!csv = table.first.to_a.map(&:to_csv).join获取此表:功能/局限性:Iguvium将pdf渲染为图像,查找类似表...

    csv-practice

    test/csv_practice_test.rb lib/csv_practice.rb第1部分着重于阅读测试,以及创建从CSV读取并从中进行转换/计算的方法。第2部分着重于阅读测试以及使用Enumerable方法实现方法。可选的一波侧重于编写测试,以及使用...

    Ruby-normalizecountry将国家名称和代码转换为一个标准

    Ruby-normalizecountry 是一个专门用于将国家名称和代码转换为统一标准的工具,它能有效地帮助开发者解决跨数据库、文件格式和系统之间数据不一致的问题。本文将深入探讨这一工具的功能、使用方法及其在实际开发中的...

    数据比较小程序(Ruby)

    Ruby 提供了内置的 File 类,可以方便地进行文件的打开、读取、写入和关闭操作。 3. **数据解析与处理**:数据比较可能涉及对CSV、JSON、XML或数据库记录等格式的数据进行解析。Ruby有多种库,如CSV、JSON和...

    extract_ticket_numbers:用于读取 CSV 文件的 CLI,从每一行中提取 Jira 票号并将其添加为附加列

    提取票号 安装 将其安装为 cli 程序: ...从中提取票号并将其添加到 CSV 文件中: $ extract_ticket_numbers add_to_csv CSVFILE 例子 $ extract_ticket_numbers add_to_csv blue_ant_report.csv

    telemproc:一个简单的 ruby​​ 脚本来处理 OpenTX 遥测文件并提取有用的信息

    1. **文件读取**:`telemproc` 使用 Ruby 的内置 `File` 类来打开和读取遥测文件。这包括读取整个文件内容到内存,或者逐行读取以节省资源。 2. **数据解析**:`.csv` 文件被转换成 Ruby 内部的数据结构,如数组或...

Global site tag (gtag.js) - Google Analytics