我写了一个表单。。表单的数据提交到struts2的action里面然后由action提交到数据库。。可是数据到了数据库就是乱码了。我用的数据库是sqlserver高手指点啊。尽量相信点。。表单界面也设置了:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>和<%request.setCharacterEncoding("utf-8");
  response.setCharacterEncoding("utf-8"); %>action 里面也设置了 ServletActionContext.getRequest().setCharacterEncoding("utf-8");
      ServletActionContext.getResponse().setCharacterEncoding("utf-8");

解决方案 »

  1.   

    说详细点怎么设置sqlserver的字符编码啊、、、我不会没百度出来、、、
      

  2.   

    jdbc:mysql://localhost:3306/android_stat?useUnicode=true&characterEncoding=utf-8
    在连接数据库的时候加上 ?useUnicode=true&characterEncoding=utf-8
      

  3.   

    加上那个"jdbc:sqlserver://localhost:1433; DatabaseName=RuiNiInfoDb?useUnicode=true&characterEncoding=utf-8";
    数据库就连不上了
    无法打开登录所请求的数据库 "RuiNiInfoDb?useUnicode=true&characterEncoding=utf-8"。登录失败。
      

  4.   

    满足以下两点,不会有乱码的存在的。 
    1,程序文件,jsp文件是utf-8编码的,jsp文件的头摇设置utf-8编码类型
    2,数据库设置成utf-8
    你看下你的数据库编码设置的是什么。如果网页是utf-8 数据库是gb2312 也有可能会乱码、在数据库上右键属性查看。
      

  5.   

    一般ssh整合的时候都会在web.xml里面配置一个字符过滤的。
    <!-- 转译字符编码 -->
      <filter>
       <filter-name>encodingFilter</filter-name>
       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
       <init-param>
       <param-name>encoding</param-name>
       <param-value>utf-8</param-value>
       </init-param>
       <init-param>
       <param-name>forceEncoding</param-name>
       <param-value>true</param-value>
       </init-param>
      </filter>
      

  6.   

    恩楼上说的很对,就是数据库的问题,解答如下:
    第一种办法:先选中出错的数据库→选中以后右键点击属性会弹出数据库属性 对话框→选中数据库属性对话框中的选项→把选项中的排序规则设置成:Chinese_PRC_90_CI_AS→最后点击确定即可。(注意:在选择数据库属性的时候必须确保你所修改的数据库未被使用才可以修改否则会失败的)第二种办法:首先打开你的sql查询分析器(新建查询),然后输入以下代码执行即 可:ALTER DATABASE 数据库名 COLLATE Chinese_PRC_90_CI_AS例如: ALTER DATABASE 9NPC COLLATE Chinese_PRC_CI_AIALTER DATABASE AutoUpgrade COLLATE Chinese_PRC_CI_AI解析原因:出现以上情况主要是因为数据库属性的排序规则设置不正确,在Microsoft SQL Server 2005 中,字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则。排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。如:  Chinese_PRC_90_CI_AS前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。排序规则的后半部份即后缀 含义:   _BIN 二进制排序   _CI(CS) 是否区分大小写,CI不区分,CS区分  _AI(AS) 是否区分重音,AI不区分,AS区分     _KI(KS) 是否区分假名类型&defKI不区分,KS区分 _WI(WS) 是否区分宽度 WI不区分,WS区分 区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,比较还将重音不同的字母视为不等。区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项。这个是百度找的,sqlserver2005的解决办法,怎么会找不到呢
      

  7.   

    sqlserver 数据库的编码问题。
      

  8.   

    这个问题,很简单!
    首先你看一下,插入数据库前的字段是不是乱码,System.out.println();打出来看看就知道了
    然后,数据库安装时候,设置的编码问题,是什么?一般来说中国人,都GBK
    之后,建表的时候,用数据库工具的话,应该会有设置编码类型,你有没有设置正确
    最后,数据库链接的url一定要写多,在url后面+ characterEncoding=这边的编码方式要和数据库安装的时候一样。一般来说中文乱码的话,你就+ characterEncoding=GBK。问题解决
    赶紧给分