Rails中文乱码问题【转】
乱码情况一:netbeas控制台输出乱码
具体表现为:在程序中定义中文字符串,然后输出。但输出为乱码
解决方法:打开netbeans安装目录,找到etc目录下的netbeans.conf文件。在netbeans_default_options的最后面添加上-J-Dfile.encoding=UTF-8
这种情况,一般发生在win下面。
乱码情况二:含有中文目录或文件名的输出为乱码
具体表现为:如:输出root目录,在其下包含有中文的目录或文件名为中文,输出时中文为乱码。
解决方法:设置Encoding.default_internal="UTF-8",其为表示默认内编码为UTF-8,这样目录在读取的时候就会自动转码为UTF-8。
注:如果初始目录的目录名包含中文,则会报找不到文件的错误,如:
No such file or directory - D:\素材 (Errno::ENOENT) 。D:\素材目录是存在的
这个问题,还没找到解决办法。。。
乱码情况三:读取文本文件,输出中文时出现乱码
具体表现为:要读取的文件内容含有中文,在输出时是乱码。原因是文本文件的保存编码和读取输出的编码不一致,如:在win平台下使用记事本新建一个包含中文的文本文件(默认为GBK编码),用netbeas输出时使用UTF-8编码,所以是乱码。
解决办法:
方法一:使用其他文本编辑器打开文本文件然后重新保存,保存编码选择UTF-8编码或其他自己需要的编码。
方法二:使用ruby的转码方法,如GBK转UTF-8,str.encode(Encoding.find("UTF-8"),Encoding.find("GBK"))。格式为str.encode(ecoding_to,encoding_from),encoding_to表示要转换的目的编码,from则为从什么编码转换
乱码情况四:rhtml中含有中文时出现的invalid byte sequence in GBK错误,这个虽然不算乱码但其原因还是中文的编码问题
具体表现为:当要显示的页面中含有中文时,会莫名的报出这个错误。再具体点就是页面的中文只有在特定的情况下才会发生后台报错,比如:JavaScript的中文注释引起错误,但在中文的注释后添加一个‘晕’的汉字后又不报错了。
我的解决方法是在application_controller.rb中添加Encoding.default_internal="UTF-8"。这样就不会出现上面的诡异异常了。
乱码情况五:从数据库中取得数据显示时报 incompatible character encodings: GBK and ASCII-8BIT或 incompatible character encodings: UTF-8 and ASCII-8BIT的错误
具体表现为:数据库中的中文不是乱码,取出来在页面显示时报编码错误。原因是刚从数据库取出来的时候字符串是ASCII-8BIT,尽管已经在database.yml中设置encoding:utf-8但是无效。
这个暂时没找到彻底的解决方法,我是在model里面涉及到中文字符串属性添加一个get前缀的方法,在其内进行转码如:
def get_name
return self.name.force_encoding(Encoding.default_internal)
end def get_name
returnself.name.force_encoding(Encoding.default_internal)
end
当需要取得model的name属性时,使用 model.get_name 代替以前的 model.name。 算是临时的解决方法吧。
乱码情况六:使用ENV读取环境变量,包含中文的乱码。一般这种只发生在win系统上。
直接贴代码,如下:
#coding:utf-8
user = ENV['user']
puts "#{user}"#puts "user的内容是:#{user}" 这句抛出incompatible character encodings: UTF-8 and ASCII-8BIT (Encoding::CompatibilityError)
puts "user对象是否被冻结:#{user.frozen?}"
puts "user的编码是:#{user.encoding}"#如果使用破坏性的方法encode!则会出现can't modify frozen string (RuntimeError)的错误#如果第二个参数是ASCII-8BIT 则会出现"\xBF" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)的错误
user = user.encode(Encoding.find("utf-8"),Encoding.find("gbk"))
puts "解码后的user是:#{user}"# 比较奇怪的是 user 明明是GBK编码的,可是encoding方法返回的却是ASCII-8BIT。难道ruby又自作多情的把GBK转换为ASCII-8BIT么? 输出如下: ?????????
user对象是否被冻结:true
user的编码是:ASCII-8BIT
解码后的user是:酷的飞上天空 上面的乱码在我机器上是一个一个的方块。
暂时就遇到这些了,以后补充。大部分的乱码都是系统造成的,看来在win系统上开发还真是问题多多啊。
ruby1.9.1中可以使用魔法注释,即在脚本的第一行添加#coding:UTF-8,这样可以指定脚本所使用的编码。举个例子如下:
#coding:utf-8
puts "中文".length
#输出 2 #coding:ASCII-8BIT
puts "中文".length
输出 6
我想应该就是确定脚本中定义的字符串的编码的作用
原文:http://314858770.iteye.com/blog/687978
Rails中文乱码问题【转】的更多相关文章
- java中文乱码解决之道(一)-----认识字符集
沉寂了许久(大概有三个多月了吧),LZ"按捺不住"开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.c ...
- MAC下 mysql不能插入中文和中文乱码的问题总结
MAC下 mysql不能插入中文和中文乱码的问题总结 前言 本文中所提到的问题解决方案,都是基于mac环境下的,但其他环境,比如windows应该也适用. 问题描述 本文解决下边两个问题: 往mysq ...
- java中文乱码解决之道(九)-----总结
乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了.LZ之所以写这个系列博客就是因为遇到 ...
- 解决springmvc+mybatis+mysql中文乱码问题【转】
这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...
- freemarker页面中文乱码
一.前言 简单的记录freemarker遇到的错误问题:ftl页面中文乱码 由于freemarker整合在ssm框架中,所以笔者直接贴配置代码 <beans xmlns="http:/ ...
- tomcat项目中文乱码问题解决方法
在部署tomcat项目时经常会遇到中文乱码问题,解决的方法可参考以下步骤. 1.更改Tomcat安装目录下的conf\server.xml,指定浏览器的编码格式为"utf-8"格式 ...
- IE下get传中文乱码的问题 -- 解决方案 (js)
W3school 函数 JavaScript 全局对象 定义和用法 encodeURI() 函数可把字符串作为 URI 进行编码. 语法 encodeURI(URIstring) 参数 描述 URIs ...
- JSP和Servlet的中文乱码处理
JSP和Servlet的中文乱码处理 前几天学习了JSP和Servlet中有关中文乱码的一些问题,写成了博客,今天进行更新一下.应该是可以解决日常的乱码问题了.现在作以下总结希望对需要的人有所帮助.我 ...
- Git bash下中文乱码问题
Git bash下中文乱码--解决方案 解决办法1: 在git bash下,右键 出现下图,选择options: 选择"Text" 将Character set设置为 UTF-8 ...
随机推荐
- 加和求不同的组合方式数目(dp)
描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式.如: n=5,5个数分别为1,2,3,4,5,t=5: 那么可能的组合有5=1+4和5=2+3和5=5三种组合方式. 输入 输入的第 ...
- MapReduce-边数据
边数据 边数据(side data)是作业所需的额外的只读数据,以辅助处理主数据集.所面临的挑战在于如何使所有map或reduce任务(这些任务散布在集群内部)都能够方便而高效地使用边数据. 利用Jo ...
- JMeter-Window10系统下设置环境变量
首先我们右击此电脑(我的电脑),点击属性 接下来我们就可以进入到控制面板主页,点击[高级系统设置] 在系统属性里面,点击[环境变量]按钮 在环境变量里面,点击[新建]按钮 接下来我们输 ...
- Git之(一)Git是什么[转]
为什么使用Git 孔子曾经曰过的,名正则言顺 言顺则事成. 我们在学习一项新技术之前,弄清楚为什么要学它至关重要,至于为什么要学习Git,我用一段if-else语句告诉你原因: if(你相信我){ 我 ...
- 在Android中使用实时调度(real-time)
Linux的线程调度策略中有FIFO和RT的实时调度方法,但是在Android中做了限制,普通用户不能修改线程的调度算法为FIFO和RT,必须ROOT用户才能更改.但问题是程序是以普通用户启动和运行的 ...
- mysql分组取topn
本文来自 http://www.jb51.net/article/31590.htm 有些语句sql top n 是sqlserver语法 --按某一字段分组取最大(小)值所在行的数据 代码如下: ...
- HANA IMPORT AND EXPORT
权限管控的过于严格,所以找机会写个导入导出的流程.从测试机传输到生产机 1 选中EXPORT , 导出将要传输的模型 也可以 在QUICK VIEW 里选中导入导出.个人爱好 2 选择传输的两种模式 ...
- 弹框内画echarts图dom元素无法获取的问题
弹框内画echarts图dom元素无法获取的问题? 什么意思呢?就是当我们打开弹框之后,此时要画eachars图,可是echarts图的容器dom此时为null, 因此我们需要做的就是在dom元素获取 ...
- JIRA 的安装和使用
需要的软件 6.0.3-x32.exe jira_6.x_language_zh_CN.jar jira_crack.zip http://pan.baidu.com/s/1dEbpJc1 (从网盘下 ...
- Python3.6.0安装
1.安装 具体详情请参考下图: 双击安装包: 勾选“add python 3.6 to PATH”这样可以自动生成环境变量,选择“Customize installation”自定义安装. 2. ...