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

相关文章

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

java内存泄漏排查过程及解决

《java内存泄漏排查过程及解决》公司某服务内存持续增长,疑似内存泄漏,未触发OOM,排查方法包括检查JVM配置、分析GC执行状态、导出堆内存快照并用IDEAProfiler工具定位大对象及代码... 目录内存泄漏内存问题排查1.查看JVM内存配置2.分析gc是否正常执行3.导出 dump 各种工具分析4.

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

SpringBoot整合Dubbo+ZK注册失败的坑及解决

《SpringBoot整合Dubbo+ZK注册失败的坑及解决》使用Dubbo框架时,需在公共pom添加依赖,启动类加@EnableDubbo,实现类用@DubboService替代@Service,配... 目录1.先看下公共的pom(maven创建的pom工程)2.启动类上加@EnableDubbo3.实

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例