急!!高手帮忙。。往数据库插入中文数据乱码。。。。。

曹胜欢 2011-10-17 05:53:47
我写了一个表单。。表单的数据提交到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");
...全文
158 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyl713 2011-10-19
  • 打赏
  • 举报
回复
这个问题,很简单!
首先你看一下,插入数据库前的字段是不是乱码,System.out.println();打出来看看就知道了
然后,数据库安装时候,设置的编码问题,是什么?一般来说中国人,都GBK
之后,建表的时候,用数据库工具的话,应该会有设置编码类型,你有没有设置正确
最后,数据库链接的url一定要写多,在url后面+ characterEncoding=这边的编码方式要和数据库安装的时候一样。一般来说中文乱码的话,你就+ characterEncoding=GBK。问题解决
赶紧给分
康派尔 2011-10-18
  • 打赏
  • 举报
回复
sqlserver 数据库的编码问题。
休谱诺斯 2011-10-18
  • 打赏
  • 举报
回复
恩楼上说的很对,就是数据库的问题,解答如下:
第一种办法:先选中出错的数据库→选中以后右键点击属性会弹出数据库属性 对话框→选中数据库属性对话框中的选项→把选项中的排序规则设置成: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的解决办法,怎么会找不到呢。。。
幽饮烛 2011-10-18
  • 打赏
  • 举报
回复
用自己的程序读取出来后不是乱码就行,不要在意其他工具去看数据时乱码的情况。
sleepwalker_ 2011-10-18
  • 打赏
  • 举报
回复
学习 。。
postgrest 2011-10-18
  • 打赏
  • 举报
回复
一般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>
scrack 2011-10-17
  • 打赏
  • 举报
回复
sqlserver设置数据库编码
曹胜欢 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jmonian 的回复:]

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

没有啊、、、、看不到数据库编码。。。
jmonian 2011-10-17
  • 打赏
  • 举报
回复
满足以下两点,不会有乱码的存在的。
1,程序文件,jsp文件是utf-8编码的,jsp文件的头摇设置utf-8编码类型
2,数据库设置成utf-8
你看下你的数据库编码设置的是什么。如果网页是utf-8 数据库是gb2312 也有可能会乱码、在数据库上右键属性查看。
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 csh624366188 的回复:]
引用 3 楼 xrxhb001 的回复:

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

加上那个。。。"jdbc:sqlserver……
[/Quote]
怎么可能呢,实在不行写一个过滤器,应该能搞定的。
曹胜欢 2011-10-17
  • 打赏
  • 举报
回复
顶啊。。。
曹胜欢 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xrxhb001 的回复:]

jdbc:mysql://localhost:3306/android_stat?useUnicode=true&characterEncoding=utf-8
在连接数据库的时候加上 ?useUnicode=true&characterEncoding=utf-8
[/Quote]
加上那个。。。"jdbc:sqlserver://localhost:1433; DatabaseName=RuiNiInfoDb?useUnicode=true&characterEncoding=utf-8";
数据库就连不上了。。。
无法打开登录所请求的数据库 "RuiNiInfoDb?useUnicode=true&characterEncoding=utf-8"。登录失败。
xrxhb001 2011-10-17
  • 打赏
  • 举报
回复
jdbc:mysql://localhost:3306/android_stat?useUnicode=true&characterEncoding=utf-8
在连接数据库的时候加上 ?useUnicode=true&characterEncoding=utf-8
曹胜欢 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fyl11657 的回复:]

数据库编码 看看吧
[/Quote]
说详细点。。。怎么设置sqlserver的字符编码啊、、、我不会。。。没百度出来、、、
fyl11657 2011-10-17
  • 打赏
  • 举报
回复
数据库编码 看看吧

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧