浙江省高等学校教师教育理论培训

微信搜索“毛凌志岗前心得”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

iconv -c -f latin1 -t utf-8 doc/ddd.txt > doc/new.txt

 

http://www.javaeye.com/topic/240133

 

http://www.javaeye.com/topic/565606

 

ruby也有utf-8编码问题

http://www.javaeye.com/topic/369753

用ruby实现简体中文和繁体中文的相互转化

 

2009-03-17

Rails 中的乱码问题解决

关键字: set_charset
Ruby代码 
  1. before_filter :set_charset    
  2. def set_charset     
  3.    if request.xhr?     
  4.      header['Content-Type']="text/javascript,charset=utf-8"    
  5.    else    
  6.      header['Content-Type']="text/html,charset=utf-8"    
  7.    end    
  8.    suppress(ActiveRecord::StatementInvalid) do  
  9.    ActiveRecord::Base.connection.execute 'SET NAMES UTF8'  
  10.    end  
  11. end    



 
 

如果,你遇到了上面的错误提示, 
那么,说明你的Rails版本升级了,设置编码的描述改变了,请点击这里 
Rails中文显示乱码的描述改变 


以上的设置分布对应于html javascript mysql同时还要注意 
文件编辑保存时的编码也需要统一为utf8(建议在编辑器中直接设置为utf8,注意有不少编辑器默认跟操作系统默认编码走,比如xp的默认编码是gbk,而不是utf8,这一点需要特别注意) 
数据库的默认编码也需要统一为utf8,默认的latin1_swedish_ci也可能会引起乱码问题 
下面还有night_stalker回答问题的部分 
将字符串编码改成系统编码(中文windows控制台一般是GB2312或者GBK) 

在ruby 1.8,用iconv: 

Ruby代码 
  1. require 'iconv'    
  2. p Iconv.conv('gbk','utf-8',item[:name]))    
  3.   
  4. require 'iconv'  
  5. p Iconv.conv('gbk','utf-8',item[:name]))  



在ruby 1.9,用encoding: 
Ruby代码 
  1. p item[:name].encode(Encoding.default_external)    
  2.   
  3. p item[:name].encode(Encoding.default_external)  



如果嫌每次都转码不方便,可以 

Ruby代码 
  1. require 'iconv'    
  2. def echo something     
  3.   if something.nil?     
  4.     p nil    
  5.   else    
  6.     p Iconv.conv('gbk','utf-8',something.to_s)     
  7.   end    
  8. end    
  9.   
  10. require 'iconv'  
  11. def echo something  
  12.   if something.nil?  
  13.     p nil  
  14.   else  
  15.     p Iconv.conv('gbk','utf-8',something.to_s)  
  16.   end  
  17. end  


以后就用echo输出编码为utf-8的。 

posted on 2010-12-22 01:11  lexus  阅读(887)  评论(0)    收藏  举报