rails3 mysql2安装,incompatible character encodings: UTF-8 and ASCII-8BIT 解决!

本文主要是介绍rails3 mysql2安装,incompatible character encodings: UTF-8 and ASCII-8BIT 解决!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题环境:

os:  windows XP

 

F:\>ruby -v

ruby 1.9.2p180 (2011-02-18) [i386-mingw32]

 

 

 

F:\>rails -v

Rails 3.0.5

 

 

问题描述:

1、安装不了mysql2

      rails3 默认使用mysql adapter是mysql2. 

   1) gem install mysql2

         ERROR:  Error installing mysql2:

         The 'mysql2' native gem requires installed build tools.

 

        Please update your PATH to include build tools or download the DevKit

        from 'http://rubyinstaller.org/downloads' and follow the instructions

        at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'

 

   2) 安装DevKit  按照http://wuhuizhong.iteye.com/blog/875493

 

   3)gem install mysql2

         Temporarily enhancing PATH to include DevKit...

        Building native extensions.  This could take a while...

        ERROR:  Error installing mysql2:

        ERROR: Failed to build gem native extension.

 

        F:/Ruby192/bin/ruby.exe extconf.rb

       checking for rb_thread_blocking_region()... yes

       checking for main() in -llibmysql... no

         *** extconf.rb failed ***

Could not create Makefile due to some reason, probably lack of

necessary libraries and/or headers.  Check the mkmf.log file for more

details.  You may need configuration options.

 

    4)这样问题就同 http://www.iteye.com/problems/49494

    5)那就暂且使用mysql  adapter吧

       gemfile 中改为: gem 'mysql', '2.8.1'

2.incompatible character encodings: UTF-8 and ASCII-8BIT

    当页面中写了中文之后,比如一个label, <%= f.label :title, '标题' %>

    按错误信息google ,baidu了 n多,都没有解决。包括:

    1) html.erb文件前加这一行:<%# encoding:utf-8 %> ,并保存成了utf-8格式(这一点是需要的)

    2) http://www.iteye.com/topic/355909 这个第一点试过了,第二点找不到类似的文件

 

    后来发现 new页面可以正常显示,edit页面报这个错,同是一个_form.html.erb

 

    按一篇文章中说法,测试了下:

   页面代码:

   <td><%= blog.title.encoding %></td>

 

    页面显示:ASCII-8BIT

    说明:因为rails从数据库取出的中文默认编码是ASCII-8BIT,如果页面是UTF-8编码,  concat就会出现这个错误。

 

  要解决这个问题,就需要“数据库取出的中文 转为utf-8”. 找不到可用的资料。

 

解决

    感谢QQ网友 寿司   告诉我windows下安装mysql2的命令:

    gem install mysql2 -v 0.2.6 --platform x86-mingw32

 

    成功安装了mysql2,  将gemfile中改为:gem 'mysql2', '0.2.6'  

    database.yml 中adapter 改回mysql2

 

    再次测试:页面代码:<td><%= blog.title.encoding %></td>

    result:  UTF-8.

 

    第2个问题也迎刃而解了。再次感谢 寿司。


 

补充:

   看来mysql2 adapter还是有bug, 一个表有5列:

  A: id   B:string  C:integer  D:string  E:string

  从数据库查出,B列utf-8, 显示正常, D,E  却是ASCII-8BIT。

 

   我重建了数据库表,调整了列的顺序,改为:

   A: id   B:string   D:string  E:string C:integer 

  从数据库查出,B,D列utf-8, 显示正常, E  还是ASCII-8BIT。

 

    再重建一次,,改为:

   A: id   B:string   D:string  E:string C:integer 

   这次,从数据库查出,B,D,E列utf-8,都显示正常了

 

2011-04-17 补充:

  今天遇到了这个错误:invalid date   

  http://hot88zh.iteye.com/blog/858300

  按以上博文中的方法:复制Mysql5 server端的libmysql.dll文件,到Ruby安装目录下的bin文件夹中,即可解决~

 

  之前使用mysql adapter时,ruby bin下的libmysql.dll 是一个早期版本,现在用mysql2 adapter,就需要用mysql 5 server下的libmysql.dll

 

 

 

这篇关于rails3 mysql2安装,incompatible character encodings: UTF-8 and ASCII-8BIT 解决!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/246414

相关文章

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

解决Entity Framework中自增主键的问题

《解决EntityFramework中自增主键的问题》:本文主要介绍解决EntityFramework中自增主键的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Entity Framework中自增主键问题解决办法1解决办法2解决办法3总结Entity Fram

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1