乱码情况一: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
当需要取得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
我想应该就是确定脚本中定义的字符串的编码的作用
在此版本中废除了全局变量$KCODE
附件中含有中文ruby1.9.1的参考手册
分享到:
相关推荐
在Rails框架中处理文件上传时,经常会遇到一个问题,那就是当用户尝试上传包含中文名称...通过这些方法,可以有效地解决Rails应用在处理中文文件名时可能出现的乱码问题,从而提高用户体验并保证数据的完整性和一致性。
中文乱码解决办法 cmd下中文不能输入 将cmd代码页改成936: chcp 936 ruby 读取中文强制设置为utf-8 可以在文件中加一个注释语句 # encoding: UTF-8,ruby就会用utf-8格式载入 cmd输出乱码 这个解决不掉, 我看到...
这一步是关键,它指定了MySQL的默认字符集为UTF-8,从而避免了中文乱码的问题。 #### 二、安装与配置Ruby on Rails Ubuntu 11.04默认包含Ruby 1.8.7和Rails 2.3.5,但为了更好的兼容性和性能,建议手动更新或安装...
这是因为默认情况下,Ruby使用ASCII编码来解析源代码文件,这可能导致中文字符显示为乱码或引发错误。 #### 解决方案 为了避免这类问题,可以采取以下两个步骤: 1. **在文件首行指定编码**:在文件的首行添加...
- 导入默认数据:`RAILS_ENV=production rake redmine:load_default_data`,确保选择`zh`避免中文乱码 7. **设置目录权限** - 创建必要目录:`mkdir tmp public/plugin_assets` - 更改目录所有者和权限:`sudo ...
在中文环境中,可能会遇到编码问题,如乱码等,这个解决方案可能是为了解决这些问题而提供的。 描述中提到的“插件”可能是指RoR的一些中文支持插件,这些插件可以帮助开发者更好地处理中文字符集,避免编码错误。...
4、收集网上一些FusionCHarts的使用问题,如中文乱码的解决办法; 5、包括了官方的FusionCharts.js脚本文件,拿去即可使用了,呵呵; 6、最新独家修改的官方的DEMO例子,直接可以在本地打开哦。 不了解FusionCharts...
学员可能会学习如何安装和使用常见的Ruby Gems,如` nokogiri` 用于解析XML和HTML,`sinatra` 或 `rails` 构建Web应用。 5. **测试驱动开发(TDD)**:App Academy强调实践,学员可能需要编写大量测试用例,使用如...
4、收集网上一些FusionCHarts的使用问题,如中文乱码的解决办法; 5、包括了官方的FusionCharts.js脚本文件,拿去即可使用了; 6、最新独家修改的官方的DEMO例子,直接可以在本地打开哦。 不了解FusionCharts的人...
- 修改JDK的字体文件以避免中文显示乱码的问题。 **3. 快捷键介绍** - **快速打开Ruby类**(包括系统类库):Ctrl+O - **快速打开当前项目文件**:Alt+Shift+O - **在Controller和View间跳转**:Ctrl+Shift+A - *...
下面是一个使用FusionCharts的简单示例,展示了如何通过Java Web应用生成动态图表,并处理中文乱码问题。 ```jsp ;charset=UTF-8" pageEncoding="UTF-8"%> String area = request.getParameter("area"); if ...
安装路径中不应包含中文或空格,以避免可能的乱码问题。在自定义安装选项中,一般推荐安装所有组件。在确认安装设置无误后,用户可以点击“Install”开始安装Node.js环境,并在安装完成后点击“Finish”以完成整个...