项目中有一个csv文件因为是latin1 encoded,所以解析就会出现错误。
解决方案:可以通过Iconv.iconv("UTF-8", "latin1", file.read)把stream转化成UTF-8格式(rails的默认编码是UTF-8)。
局限:当然此种方法的局限是限定了文件的编码只能是latin1的时候才能解析正确。当然,如果没有特殊字符,其他的一些ASCII字符(single byte character)在两种编码之间会转换正确。但一当文件中有其它编码的特殊字符,那就歇菜了。
更进一步:使用gussing工具猜编码吧,比如下面这段
File.open(tmp_file, 'w') do |f|
input = file.read
charset = CMess::GuessEncoding::Automatic.guess(input)
f.write(Iconv.iconv('UTF-8', charset, input))
end
以上问题详见此讨论
顺便说下ruby的encoding
:
1. In ruby <= 1.8, strings were effectively just byte streams. Those bytes would
often contain text in one encoding or another, but there was no formal way to
record exactly which one (if any; binary data has none). All the default
methods assumed single byte encoding (such as US-ASCII), so behaviour was odd
when the encoding was multibyte (such as UTF8).
2. In ruby 1.9:
str.encode!("UTF-8")
File.open("file", "r:UTF-8") {|f| ...........}
分享到:
- 2008-09-10 11:23
- 浏览 761
- 评论(1)
- 论坛回复 / 浏览 (1 / 2468)
- 查看更多
相关推荐
### Ruby on Rails基础知识详解 #### 一、Rails简介与安装 **Rails** 是一款流行的开源Web应用框架,基于Ruby语言编写。它强调简洁性、生产力和优雅的设计,非常适合快速开发Web应用。 - **特点** - **DRY (Don'...
在Ruby on Rails框架中,数据库配置是至关重要的部分,它允许开发者与各种数据库系统进行交互,如MySQL、Microsoft SQL Server等。以下将详细介绍如何在Windows环境下安装Ruby on Rails以及配置数据库。 首先,我们...
### Ubuntu 11.04下Ruby on Rails与MySQL数据库集成指南 #### 一、安装与配置MySQL数据库 在Ubuntu 11.04环境中,安装MySQL数据库是部署Ruby on Rails应用的重要步骤之一。首先,通过打开终端并执行以下命令进行...
Ruby on Rails(简称Rails)是一种基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。MySQL则是一款广泛使用的开源关系型数据库管理系统,以其高效...
Ruby语言是一种面向对象的脚本语言,它以其简洁明了的语法和强大的功能被广泛应用于Web开发领域,尤其是在Ruby on Rails框架下。在处理文本数据时,字符编码的自动检测是一个复杂而重要的问题。由于网络传输、文件...
- **集成Ruby on Rails支持**:提供Ruby on Rails项目的创建、调试等功能。 - **强大的代码编辑器**:支持语法高亮、代码自动完成等功能。 - **调试工具**:帮助开发者定位和修复代码中的问题。 #### 4.2 使用...
在Ruby on Rails开发中,数据存储的灵活性是关键。随着应用程序规模的增长,单一数据库可能无法满足性能、可扩展性或组织结构的需求。在这种背景下,“Ruby-Multiverse”应运而生,它为Rails应用程序提供了优雅地...
开发者在处理包含中文字符的字符串时,可以利用Rails框架提供的方法,如`force_encoding`来指定字符串的编码类型,或者使用`encode`方法进行编码转换,确保字符串在处理过程中的正确性和一致性。同时,Rails还提供了...
本文将详细介绍如何在Mac系统上搭建一个完整的Rails开发环境,包括Ruby环境配置、Rails框架安装、MySQL数据库安装以及RubyMine集成开发环境的配置等关键步骤。 #### 二、Ruby环境配置 由于Mac系统自带Ruby环境,...
encoding: utf8mb4 reconnect: false database: your_database_name pool: 5 username: your_username password: your_password host: localhost ``` 其次,问题可能出在MySQL驱动程序上。Rails使用`mysql2`...
在探索如何将Adobe Flex3与Ruby on Rails(简称Rails)结合,创建动态Web应用的过程中,一个常见的入门案例便是“HelloWorld”。此案例不仅展示了这两种技术如何协同工作,还揭示了它们在构建交互式用户界面方面的...
标题中的“Rails的中文乱码问题”涉及到的是在使用Ruby on Rails框架开发Web应用时,遇到的中文字符编码不正确的问题。Rails是一个基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构模式。在...
在Ruby on Rails框架中,与SQLServer 2000集成可能会比与其他常见的数据库系统(如MySQL或PostgreSQL)稍复杂一些,因为SQLServer 2000的兼容性问题和缺少官方支持。然而,通过一些第三方库和适当的配置,我们仍然...
在Ruby on Rails框架中,开发者经常需要连接不同的数据库系统,如MySQL、PostgreSQL或SQL Server。本主题将深入探讨如何在Rails应用中使用SQL Server作为数据存储,特别关注`activerecord-sqlserver-adapter`这个gem...
在Rails框架中处理文件上传时,经常会遇到一个问题,那就是当用户尝试上传包含中文名称的文件时,文件名可能会出现乱码。这个问题主要是由于字符编码不兼容导致的。Rails默认使用UTF-8编码,但文件系统或者某些外部...
- Ruby社区拥有丰富的第三方Gem库,如Rails(Web开发框架)、Rspec(测试框架)等,大大扩展了Ruby的功能。 Ruby的API文档详细解释了这些概念及其使用方法,是学习和开发Ruby应用必不可少的参考材料。通过阅读和...
- 官方推荐使用 Ruby 1.9.2 或更高版本,因为之前的版本如 1.8.7 p248 和 p249 存在可能导致 Rails 3 崩溃的 bug。 2. **RubyGems 安装与更新**: - 安装完成后需要使用 `gem update` 命令更新 RubyGems 至最新...
### Ruby on Rails 敏捷开发知识点总结 #### 1. 引言 Rails是一种基于Ruby语言的Web开发框架,以其高效、简洁著称。Rails强调“约定优于配置”(Convention Over Configuration, CoC),这使得开发者能够快速构建出...
附 Attached 是一个 Ruby on Rails 文件附件工具,可让用户上传到云端。 gem 默认支持 AWS、...rails g model video name:string encoding:attachment class CreateVideo < ActiveRecord::Migration def self.up
我最初写这个是为了在在 rails 控制器上的 ruby 中写入包含非 ascii 字符(如 éöàüèä)的字符串时摆脱“无效的多字节字符(US-ASCII)”错误 安装 gem install magic_encoding 用法 您可以使用像这样的...