`

utf8 ruby1.9

阅读更多
引用
invalid byte sequence in utf-8 mysql


In Ruby 1.9.3 is possible to use String.encode to "ignore" the invalid UTF-8 sequences. Here is a snippet that will work both in 1.8 (iconv) and 1.9 (String#encode) :

require 'iconv' unless String.method_defined?(:encode)
if String.method_defined?(:encode)
  file_contents.encode!('UTF-8', 'UTF-8', :invalid => :replace)
else
  ic = Iconv.new('UTF-8', 'UTF-8//IGNORE')
  file_contents = ic.iconv(file_contents)
end

or if you have really troublesome input you can do a double conversion from UTF-8 to UTF-16 and back to UTF-8:

require 'iconv' unless String.method_defined?(:encode)
if String.method_defined?(:encode)
  file_contents.encode!('UTF-16', 'UTF-8', :invalid => :replace, :replace => '')
  file_contents.encode!('UTF-8', 'UTF-16')
else
  ic = Iconv.new('UTF-8', 'UTF-8//IGNORE')
  file_contents = ic.iconv(file_contents)
end
分享到:
评论

相关推荐

    Programming Ruby 1.9 & 2.0 The Pragmatic Programmers’ Guide 4th Edition

    Ruby 2.0的主要语言变化是增加了关键字参数,并将UTF-8作为默认源文件编码。标准库中增加了一些内容,包括支持懒惰访问潜在无限列表的Enumerator::Lazy,Refinements允许你封装对第三方类的更改,并将其作用域限制在...

    ruby编码转换

    ### Ruby 1.9 编码转换详解 在Ruby 1.9中,字符串处理方面的改进使得编码转换变得更加直观和高效。本篇文章将详细介绍如何在Ruby 1.9环境中进行编码转换,包括如何查看字符串的编码信息、如何强制更改字符串的编码...

    ruby 1.9.3 p484稳定版本

    其中最显著的变化之一是默认编码改为UTF-8,这使得处理多语言文本变得更加方便。此外,1.9版本还引入了新的语法特性,如块的语法更简洁(使用'&'操作符),以及更强大的字符串字面量(如%q, %Q, %r等)。 在p484这...

    Rubyist 1.9

    - **字符串编码**:默认使用UTF-8编码,增强了对多语言文本的支持。 - **符号和哈希**:符号可以作为哈希键,提高了效率和代码清晰度。 - **块和迭代器**:增强了块和迭代器的功能,使得代码更加简洁和模块化。 - **...

    国际化 - jcode库和$KCODE

    例如,`$KCODE = 'UTF8'`会告诉Ruby解释器,所有的字符串默认都是UTF-8编码。`$KCODE`的设置会影响字符串操作,如正则表达式匹配,以及与I/O流相关的处理。然而,从Ruby 1.9开始,`$KCODE`被弃用,因为Ruby开始全面...

    Ruby1.91_Stable和Gem1.3.5

    1. **编码支持**:Ruby 1.9 引入了对多种字符编码的支持,如 UTF-8 和 ISO-8859-1,这使得处理多语言文本变得更加灵活。 2. **语法增强**:新增了块参数、语法糖(如 `tap` 方法)和 `__FILE__` 和 `__LINE__` 变量...

    ruby-1.9.3-p125.tar.gz

    Ruby 1.9系列是Ruby的重要升级,引入了对UTF-8编码的默认支持,增强了性能,同时引入了一些语法改进,比如对块的语法简化(使用语法糖`&:`)和新的数字字面量表示法。 "ruby-1.9.3-p125"这个压缩包文件名表明,它...

    mecab-modern:现代化 mecab-ruby

    mecab-现代现代化 mecab-ruby要求Ruby 1.9.x kconv库安装将此行添加到应用程序的 Gemfile 中: gem 'mecab-modern'然后执行: $ bundle或者自己安装: $ gem install mecab-modern用法 require "MeCab"require ...

    Ruby-Unicode字符串调试帮助

    Ruby 1.9及更高版本默认使用UTF-8编码,这意味着所有字符串都是Unicode字符串。Ruby中的String类提供了许多内置方法来处理Unicode字符,如`codepoints`, `chars`, 和 `each_char`,它们可以帮助开发者遍历和操作字符...

    Rails中上传文件保存中文文件名乱码

    在Ruby中,可以使用`iconv`库或者`String#encode`方法(Ruby 1.9及以上版本)来进行转换。以下是一个使用`iconv`的例子: ```ruby require 'iconv' def fix_encoding(file_name) iconv = Iconv.new('UTF-8', 'GBK...

    magic_encoding:轻松管理 ruby​​ 1.9 应用程序编码的魔术注释

    魔术编码 Magic Encoding 是一个小工具,可以让您快速添加或修改表示整个... # -*- encoding : utf-8 -*- 注意事项: 现有的魔法注释被替换 文件的其余部分保持不变 您可以将选项传递给该工具以指定所需的编码和您希

    mojibake:使用反向映射表恢复mojibake文本

    由于Windows-1252,ISO-8859-1和UTF-8之间的误解和错误转码,Mojibake经常以英语出现。 该模块为原始字符映射表提供了一个mojibake序列,并提供了恢复mojibake文本的实用程序。 测试是使用英语进行的,但Windows-...

    一个现代,简单,非常快速的Ruby Mysql库-绑定到libmysql-Ruby开发

    Mysql2-一个用于Ruby的现代,简单且非常快速MySQL库-绑定到libmysql Travis CI Appveyor...它还会强制使用UTF-8 [或二进制]进行连接[以及1.9中的所有字符串,除非设置了Encoding.default_internal,否则它将从UTF-8转换

    linux下redmine安装笔记

    接着,你需要登录MySQL,创建一个名为`redmine`的数据库,采用UTF8字符集。 2. **安装Ruby和相关组件**: Redmine需要特定版本的Ruby(如1.8.x)以及Rake和RubyGems。使用`apt-get`安装这些组件,然后安装Ruby的...

    unirevsin:Sinatra Unicode 反向器

    3. **Ruby 1.9+ 的 Unicode 改进**:Ruby 1.9 引入了更强大的 Unicode 处理能力,包括字符串内部的编码标识和默认的 UTF-8 编码,使得处理 Unicode 文本更加方便和正确。 4. **Ruby 1.8 兼容**:在 Ruby 1.8 中,...

    GitHub倡导的Ruby代码编写风格总结

    1. 文件编码:所有源文件必须以UTF-8编码,以确保跨平台兼容性,避免编码问题。 2. 缩进:使用2个空格进行缩进,避免使用制表符,以保持一致性。 3. 换行符:使用Unix风格的换行符(\n),在Windows环境下,可通过`git...

    bbb安装部署

    CREATE DATABASE `sakai` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; ``` 3. **设置数据库权限**: 接着为 root 用户分配 sakai 数据库的所有权限: ```sql GRANT ALL PRIVILEGES ON sakai.* TO ...

    streamly:Ruby 的流式 REST 客户端,使用 libcurl

    使用 libcurl 的 Ruby 流 REST 客户端特征像 API 一样的休息客户端Streaming API 允许调用者在接收到响应时获得响应块使用 Encoding.default_internal(否则回退到 utf-8)作为它在 1.9 中交回的字符串如何安装没...

Global site tag (gtag.js) - Google Analytics