Rails2.1.2, MySql5.0中文问题

Rails2.1.2, MySql5.0中文问题

Rails的版本为2.1.2,MYSQL版本为5.0,数据库和页面的字符集都是使用UTF-8编码格式,而且Rails中数据库配置文件中的编码格式也为UTF-8,但是页面能够显示中文正常,而从页面上传过去的中文数据存储至数据库则会出现乱码,而且前面都会带有---这样的字符。
把数据库中的乱码数据用rails读出来在网页中显示,看是否正常。
如果网页在utf8下显示是正常的话,那么就没有问题。
如果网页在utf8下显示乱码的话,那么需要检查你存贮数据部分的程序。
从数据库读取在页面显示不正常,而且现在发现,这不只是中文问题,对于英文也是一样,存储至数据库的内容在英文内容前加了“--- -”字符,不知是哪里把它加上去的。

而且我在控制器打印的日志都是正常的。
看一下你保存数据的代码片段吧
视图文件代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  <title>JavaEye Java编程 Spring框架 AJAX技术 Agile敏捷软件开发 ruby on rails实践 - JavaEye做最棒的软件开发交流社区</title>
  <meta name="description" content="Java编程,Spring Struts Webwork框架深入,XMLHTTP AJAX开发,Java Web开发,Java企业应用,Java设计模式,Java开源框架,Java应用服务器,Rich Client讨论,Ruby编程,Ruby DSL开发,Ruby on rails实践,JavaScript编程,敏捷软件开发XP TDD,软件配置管理,软件测试,项目管理UML,数据库,C#/.net C/C++ Erlang/FP PHP/Linux平台,精通Hibernate" />
  <meta name="keywords" content="Java编程 Spring框架 AJAX技术 Agile敏捷软件开发 ruby on rails实践 JavaEye深度技术社区" />
  <%= stylesheet_link_tag 'homepage' %>
<head>
<title><%= @page_title %></title>
</head>
<body>
<% form_tag :action=>"add" do %>
<table>
  <tr>
  <td><%=text_field(:arg1,params[:arg1])%></td>
  <td><input id="button1" name="button1" type="submit" value="submit"</td>
  </tr>
</table>
<% end %>
</body>
</html>

保存至数据库代码:
test = New.new
  test.name = params[:arg1]
  log = Logger.new('log.log')
  log.level = Logger:EBUG
  log.debug(test.name)
  test.save
  redirect_to :action =>'list'
而且我直接赋值一个中文还是英文给test.name都是正常的。

但是只要是从页面上传过来的都不行。

有哪位大侠碰到过这种问题?
这代码写的简直就是…………

建议你先从头开始学起吧,看看 rails 的约定是怎么回事,你的问题是,params[:args] 是 hash 对象,与字符编码没关系
代码确实太混乱,没太看明白。
楼主能不能把view和controller都贴上来看看。

我觉得问题很有可能出在 text_field的地方,
按照楼主的写法,应该用text_field_tag 更适合一些。
你应该去看看这两个函数的定义。