Apr 4 2007

RoR中文问题tips

从这里整理的: http://www.railscn.com/about45-0-asc-15.html

结合RubyOnRails官方Wiki上的一些介绍和自己实践写的。这个方法就是在使用rails的内置的长度校验的时候要考虑到中文一般占用3个字符。

Ruby本身不支持UTF-8,但是我们可以使用一些办法使用8bit的字符来储存UTF-8编码后的字符串.但是这会导致一些字符串函数出现问题,可以通过使用jcode包里的函数来替换原来的字符串函数,如length可以用jlength替换。
1、首先,我们需要在public/dispatch.cgi文件的#!/path/to/ruby后面加上-Ku -rjcode
2、然后,需要使用一个before_filter来输出http头,表示使用utf-8字符集。
class ApplicationController < ActionController::Base
before_filter :set_charset

def set_charset
@headers["Content-Type"] = "text/html; charset=utf-8"
end
end
3、接着,如果要在Safari浏览器里使用rails的ajax帮助函数,则必须加入以下代码
class ApplicationController < ActionController::Base
after_filter :fix_unicode_for_safari

# automatically and transparently fiixes utf-8 bug
# with Safari when using xmlhttp
def fix_unicode_for_safari
if @headers["Content-Type"] == "text/html; charset=utf-8" and
@request.env['HTTP_USER_AGENT'].to_s.include? 'AppleWebKit' then
@response.body = @response.body.gsub(/([^\x00-\xa0])/u) { |s| "&#x%x;" % $1.unpack('U')[0] }
end
end

4、另外,可能需要调整数据库的设置能够存储utf-8字符串。

5、必须把rb源文件以及rhtml等模版文件都保存为utf-8格式。
这样你就可以直接在rb源文件里输入中文了。
=======================================================
这个方法要求从头到尾都是UTF-8.
首先、网页需要UTF-8编码。
其次,rhtml,rxml,rb文件都需要保存为utf-8 unless 你不用中文字符串。
最后,数据库这一块到似乎不是很强调是不是支持UTF-8。这个我没测试过其他情况。

如果仅仅是处理表单中的中文,Rails本身就没问题的,这个方法主要是能在ruby程序代码里使用中文字符串。
=======================================================
我按照这些方法都作了,mysql 用的Utf8编码,为什么我输入吃这个字是乱码呢?
我解决了,其实最主要是mysql connection 要utf8
我重新设置了一下mysql,就一切ok了
=======================================================
编码的问题确实很烦的。
最近就碰到一个比较妖怪的问题,醒来也一起帮我调试了半天。

一套程序,在我的开发机器上,Rails 0.13+WebRick+mySql的情况下,在FireFox和IE里AJAX部分都能够正常运行,但是发布到Linux服务器上,使用Apache+CGI的情况下,在IE下却出现任何Ajax的请求都能发送,而响应内容去无法update到某个div,一直报"Javascript系统错误"。这个问题我们想了很多原因,一一尝试后都一无所获。

后来觉得是编码的问题,于是把所有的rhtml文件都转换为UTF-8编码,发现仍然是老问题。比较郁闷的时候,看醒来用httplook抓的Http Header,发现怎么不是utf-8,然后又去查看那几个ajax请求的action,发现在IE里他们都是GB2312,突然想起来服务器的Apache默认charset是GB2312,而我忘记在application.rb里强制设置charset为utf-8了,于是那些有layout的action都按照layout里判断出charset为utf-8,而ajax请求的action都是不使用layout的,于是charset就变成了Apache默认的GB2312。而IE似乎是不允许把两种编码的内容混合在一起的,于是就出现错误了。
===========================================================
听说需要在config/environment.rb里加上一行:
$KCODE = ‘utf8′

估计跟楼主的
“1、首先,我们需要在public/dispatch.cgi文件的#!/path/to/ruby后面加上-Ku -rjcode ”
差不多吧?

另外,最好在database.yml里加上 encoding: utf8
===========================================================


Mar 14 2007

试用新插件Flickr Gallery for WordPress

效果不错,打算淘汰Gallery2改用Flickr了.不过,我在Gallery里面那么多已经分类好的照片怎么办呢?不怕,试试这个gallery的module吧:Gallery2Flickr

DSC02343 San_Diego_Sunset_Cliffs_IMG_2238


May 16 2006

有关国外虚拟主机空间

虽然架起这个blog没有多长时间,可是试用的主机空间商就有三个了:Dreamhost, IXWebHostingBluehost. 其实这三个服务商都挺不错。最后选择的是Bluehost.

Dreamhost是我购买的第一个虚拟主机,当时他的配置最高(不限域名,SSH, 20GB spaace, 2.5TB trans…)价格也最便宜(折扣价,我用777code得到9.xxUSD第一年)。control panel也不错。自带一键安装Wordpress(好像还有别的,记不住了:()买了以后发现晚上有很多sucks, 同时得知dreamhost还有CPU time limitation. 从保障用户的权益角度来说,限制严格一些是为了保障大家都能有合理的速度,可是这你得事先说明啊,不能等人家买完了你才说,这让人很不霜;除此以外还有另外一点无法忍受:没有电话支持!于是乎在空间开通20天左右的时候,提交了退款要求(这个倒是做在了control panel里面),一路next就搞定了–加上长达97天的全额退款期,Dreamhost当之无愧的成为最方便退款的hosting provider.

退掉dreamhost以后我还是一直在寻找合适的空间商,经常出入国外虚拟主机空间评测网 搜罗各种各样的信息。直到有一天发现了IXWebHosting。特点是有dedicated ip. 实在是让人兴奋(租国外主机就怕和别人共享ip,万一和你共享ip的人搞点什么轮轮或者别的排华的内容,GFW可不是好惹的,虽然有人说GFW已经升级到可以封某个port了,不一定会连累ip.可是心里还是没底阿),就买了一款3.xxUSD/m的expert plan. 头脑一热,经人没发现这个plan不支持database. FT!! 我的错,不过好在还在30天退款期内,开个ticket,令人感动的是不到10分钟就有人响应(以后也是,基本上均能在10分钟内得到响应,的确超出我的期望)最后成功退款。快速的响应,chat, ticket和free call的全方位售后服务,IXWebhosting当之无愧的成为最佳服务典范!

终于说到bluehost了,心想这个sucks最少的hosting provider总得有两把刷子吧。尽管上两次的退款都很顺利,可是总得找个安慰的家吧,改来改去的也麻烦阿。如是终于决定出血买bluehost. 其实这里面还有anyaohe的支持,他突然想做主页了,可以和我合租。 算下来一人3xx rmb/y,还是可以接受地。于是第三次拿出信用卡(这里要对浦发银行的信用卡中心提出表扬,每次网上美元消费都会有短信提醒加电话确认)。 目前为止算是用得比较熟了,除了刚开始add-on domain name的时候有一个生效时间。从此以后再也不用担心cpu time了(狂装wp plun-ins呵呵),不用担心出了问题没人管了(免费800电话技术支持,用skype就直接可以打的),美中不足是支持的方式比ixwebhosting差了一些,没办法ixwebhosting的客服实在是太棒了,很难超越了,虽然我没有使用他们的服务,但是还是希望他们继续保持下去,有朝一日一定会超越bluehost呵呵. 综上,bluehost确实是一款实力平均、没有明显缺点的选择!


May 15 2006

Canvas for wordpress:后widgets时代的来临?

这几天一直在网上忙活WP的plug-in,尝试了不少插件,widgets的是我非常欣赏的,plug-in的widget化是很好的技术趋势。只是widget数量上还不是很多,对于用户来说没有太多的选择,很多老牌的经典plug-in还是要受东去修改theme;另外就是只能定制侧边来栏。

今天偶然发现canvas这个可以个性化定制全站(一切都可以像widgets一样可以拖拉定制),令人眼前一亮。官方释放出来的图片很漂亮,可惜不能下载,需要先提交申请,然后等待(还挺会吊人胃口的:()。不管怎么说都是一款值得关注的产品。

定制版面, 界面很酷:

442
448
453

用canvas+kiwi定制出来的和有特色的版面:

458

May 13 2006

我的WordPress plug-ins

WP plug-ins太多了,挑花了眼,选了口碑比较好中文支持没问题的装上试了试,最后保留了几个:

  • WPG2 第一个装的插件,支持自己的Gallery,安装配置过程很简便,赞! 可惜不能自动调整插入图片的大小,不然就完美了
  • Quota_comments: 方便引用留言的,可以在我的留言里面看到,推荐!!安装需要加一行code在theme里,不复杂.
  • WP Widgets: 真正方便了定制侧边拦, 需要theme支持哦.Almost Spring和fSprings_widgets都支持得不错(后者在recent comments格式有点问题).现在也有不少新的Widgets支持扩展它的功能, WP Weather Widgets就是一例,效果见我的侧边拦,呵呵
  • SK2: Spam Karma 2 装上了还没怎么研究,好在没什么访问量,所以还没有Spam:p
  • Sociable: 方便访客把链接加入多种bookmark site(多数我都没听说过,土了,精简了一下,只保留一少半:)). 还有比这更帅的plug-in吗? 安装激活配置傻瓜化.不用作任何更改,每个plug-in都这样多好?!
  • Ultimate Tag Warrior : 给你的Wordpress增加tags功能. 强烈推荐!!
  • Yahoo/MSN Messenger Style Smileys 转译表情字符,例子: :) :-X :D :”> O=> >:d< 0:-) [-X O-+ :-/

打算装还没有试的Plug-ins:

Update: 增加Plugins used plugin,直接输出全部actived plugins. 省事了:)


Pages: Prev 1 2