论坛首页 Ruby版 rails

rails2..02 中对页面表单提交,单个中文字的问题

浏览 2553 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-05-08
用的是rails2.0,所有的编码方式用utf-8,中文没乱码现象,但是比如说向数据库插数据的时候提交中文表单,就是出现了问题,报错的是
OCIError: ORA-01756: ����ڵ��ַ�û����ȷ����: INSERT INTO groups (updated_at, title, id, created_at) VALUES('2008-05-08 14:24:36', '好', 10138, '2008-05-08 14:24:36')
错误就在中间那个'好'的字段,如果插入的是中文2的倍数的,那么是不会报这个错误的,比如插“好的”后是“好 ”加空格,这个也能顺利插入,就是出现中文字数为单数的时候就会出错的,oracle已经检查过了,应该不是出在数据库上面的错误,rails在这方面应该怎么解决了?希望大家能给个好建议,不甚感激!
   
最后更新时间:2008-05-08
oracle用的什么字符集?
   
0 请登录后投票
最后更新时间:2008-05-08
用的是默认安装的zh,在orale里面是用sql语句测试过了,可以单个插入中文字符的!
   
0 请登录后投票
最后更新时间:2008-05-08
全部改用UTF8吧.
   
0 请登录后投票
最后更新时间:2008-05-08
但是我想数据库里面编码的时候encoding=utf-8,应该设置过了呀。只是在安装oracle的时候是选择的zh,但是这个应该不影响吧,我的oracle是在windows下面的!
   
0 请登录后投票
最后更新时间:2008-05-08
UTF-8对oracle来说只是一种存储的时候所采用的编码格式,这个程序应用中报错是上面的那个sql语句,但是讲这条sql语句放入到sqlplus中是可以执行的,我就猜想应该问题还是出在rails上面或者是ruby语言上面,但是看到javaeye做的已经这么成功了,这个问题肯定早就有解决方案了,希望大家帮帮忙,请版主也出出注意呀!谢谢
   
0 请登录后投票
最后更新时间:2008-05-08
在运行Rails程序的那台服务器上面除了要正确安装Oracle的客户端,正确配置TNS连接之外,还需要正确的设置NLS_LANG环境变量。

如果你在Rails程序里面使用UTF-8编码格式,就必须在NLS_LANG里面指定UTF-8编码格式,否则用Rails程序去访问数据库就会出现乱码。
   
0 请登录后投票
最后更新时间:2008-05-08
robbin所说的其他都做过了,就剩下NLS_LANG环境变量没设置成UTF-8了,我试试看,看能不能呢个解决,谢谢robbin了!
   
0 请登录后投票
最后更新时间:2008-05-08
试着改了一下,但是utf-8后出现了一些状况,基本的页面都显示不出来,而且报错。但是这个编码问题也最多是解决乱码问题,我的开始为什么单个中文插进去oracle报那个错误还是没能解决掉,不知道javaeye有没遇到过这个问题?
<% form_tag :action => 'create' do %>
  <!--[form:cup]-->
   <p>
   <label for="group_title">name</label><br/>
   <%= text_field 'group', 'title'  %>
   </p>
<!--[eoform:cup]-->
  <%= submit_tag "Create" %>
<% end %>
这是我简单的提交页面的例子,group是一个类,title是他的一个字段,string类型,但是单数的中文就不能放oracle里面,就报上面那个错误,双数的倍数就能插入oracle,这个问题实在是有点想不通。
  def create
    @group = Group.new(params[:group])
    if request.post? and @group.save
      flash.now[:notice] = "Group #{@group.title} created"
      redirect_to :action => 'index'
    end
  
  end
这是我简单的一个action。不知道问题出现在那里?
  • E8d5fbe8-86f0-309d-ba79-8058b8ca991d-thumb
  • 大小: 220.3 KB
   
0 请登录后投票
最后更新时间:2008-05-09
I 服了 you。NLS_LANG不是这么设的:

NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"

你还是好好学习一下Oracle基础知识吧。
   
0 请登录后投票
论坛首页 Ruby版 rails

跳转论坛:
JavaEye推荐