在线等候大侠的答案,乱码的问题,不是一般的乱码

cjoy4856 2009-06-08 11:34:27
我试过好多方法的都没有效果,不能够把乱码给解决了,请大侠们帮我看看,想想办法。
之前是一个同事得到的中文是乱码,把乱码存到数据库里了,现在有从数据库里得到这个数据。
这个是乱码是: [璐㈡斂灞€]锛氬崡寮€鍖鸿储鏀垮眬鍙紑浣滈寤鸿骞存椿鍔ㄥ姩鍛?..
我用了这个方法: String temp=new String(str.getBytes("gbk"),"utf-8");
得到的还是有部分的乱码。得到的结果是: [财政??]:南??区财政局召开作飂建设年活动动??..

在线等候大侠们的答案。小弟在此谢过。。。。。。
...全文
31 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
windsdream 2009-06-22
  • 打赏
  • 举报
回复
写个中文转码吧!

package com.crm.web;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.RequestProcessor;
/**
* struts的中文转码
* @author
*
*/
public class MyRequestProcessor extends RequestProcessor {
protected boolean processPreprocess(HttpServletRequest request,
HttpServletResponse response) {
try {
request.setCharacterEncoding("gbk");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return (true);

}
}


配置:<controller processorClass="com.crm.web.MyRequestProcessor" />
spreadworld 2009-06-10
  • 打赏
  • 举报
回复
555555555
我也老是乱码
cjoy4856 2009-06-10
  • 打赏
  • 举报
回复
你们说的方法我都试过了,但是都没有用。其他人说的都不对,可能是我没有说清楚问题。我是要得到数据库的数据,不要想 其他的。就是数据库的数据是乱码,我要用数据库的乱码转换成正常的就行
大侠们,可以拿我的乱码去试试
能弄出来正确的,在给我答案。谢谢!!!
yier1013 2009-06-10
  • 打赏
  • 举报
回复
写入数据库的乱码!就删掉吧!
要是写数据库,写进去的时候就是乱码,那就弄个过滤器吧!
//这个是Tomcat下面的过滤器
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


public class SetCharacterEncodingFilter implements Filter {



protected String encoding = null;


protected FilterConfig filterConfig = null;


protected boolean ignore = true;

public void destroy() {

this.encoding = null;
this.filterConfig = null;

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {

// Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}


chain.doFilter(request, response);

}

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;

}



protected String selectEncoding(ServletRequest request) {

return (this.encoding);

}

}
//web.xml的配置
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
kjl1225 2009-06-10
  • 打赏
  • 举报
回复
不怕告诉你。。utf-8也不是全部中文都能显示~!
yier1013 2009-06-10
  • 打赏
  • 举报
回复
要是用的Tomcat,要在server.xml里面 <Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
加上URIEncoding="GBK"

然后在转换!
就试着GBK,ISO-8859-1,UTF-8相互转换!
xu54647265 2009-06-09
  • 打赏
  • 举报
回复
挨个编码试吧
话说,我在用一些数据字典的时候,发现竟然是用GB18030写的……
听都没听过的编码……
xcj0722 2009-06-09
  • 打赏
  • 举报
回复
乱码问题一直是个头痛的问题!!
SDMRauquin 2009-06-08
  • 打赏
  • 举报
回复
你应该转码2次。
进数据库前转一次,恢复正常。
假如之后还乱,还得转一次。

cjoy4856 2009-06-08
  • 打赏
  • 举报
回复
第一:数据库的数据已经就是乱码了
第二:要找到那个同事的,他现在不在了(离职)
zm_hs 2009-06-08
  • 打赏
  • 举报
回复
乱码情况太多了,你得弄清楚是在哪个地方开始乱码的。这样才好解决!
leisure55 2009-06-08
  • 打赏
  • 举报
回复
1.至少要保证数据库里面是正常显示地吧?
2.统一采用utf-8吧 虽然文件会比gbk大点
3.你这种情况 建议你先通过iso8859-1过度下,然后再用utf-8解码,试试?或许可以
fantasy2436 2009-06-08
  • 打赏
  • 举报
回复
首先你遇到的這個問題是不能在你這里解決的,應該從你同事那里入手,在存進數據庫之前就應該確保不是亂碼。
如果在存進之前不是亂碼,而讀出來是亂碼的話,說明是數據庫在安裝或配置時沒有考慮編碼問題,建議修改該數據庫的配置文件。
lvsh870228 2009-06-08
  • 打赏
  • 举报
回复
乱码问题是多面的
1.页面编码是否一致,不能转来转去,编码可能乱了
2.中间件编码是否和页面也一致
3.数据库编码是否也一致
你上面所说转换问题极有可能是编码混乱了,也就是说各编码之间转换乱了 ,如gbk->gb2312->utf-8
zou118627 2009-06-08
  • 打赏
  • 举报
回复
String temp1=new String(str.getBytes("gbk"),"iso8859_1");
String result=new String(temp1.getBytes("iso8859_1"),"utf-8");


用new String(),这个可以解决的,以前就是这么做的
ty_tarena_pger 2009-06-08
  • 打赏
  • 举报
回复
如果用的是tomcat5.x 那么出现以上情况就很正常 了,楼主用的是不?
Only_You_forver 2009-06-08
  • 打赏
  • 举报
回复
response.getContext("text/html;charset=UTF-8");
request.setCharaterEncoding("UTF-8");
试下
xiamuchenfeng 2009-06-08
  • 打赏
  • 举报
回复

我记得是这样写的:
String temp=new String(str.getBytes("iso-8859-1"),"UTF-8"); 试一试吧
yanyi8090 2009-06-08
  • 打赏
  • 举报
回复
你用的是SQL还是MySQL MySQL的话就得在建库建表的时候选上gbk
bdceo 2009-06-08
  • 打赏
  • 举报
回复
编码尽量要统一,获选一种大的字符集,你用的是什么数据库啊?
sqlserver的话,乱码问题挺多的,不过一般的简单过滤一下就OK了。
实在不行,试试struts货spring提供的过滤器
加载更多回复(7)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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