日期:2014-05-18  浏览次数:20707 次

乱码是否可以转换成中文
jsp页面获取文本框中的中文,未转换就直接将乱码添加进数据库,
是否可以将这乱码取出转换成中文?

------解决方案--------------------
没见过哦,学习!帮顶
------解决方案--------------------
String str = "亂碼 ";
str = new String(str.getBytes( "gb2312 "));
------解决方案--------------------
完美解决方案。
做个过滤器。首先建立文件
filter.CharacterEncodingFilter.java

然后写入代码
package Filter;

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 CharacterEncodingFilter implements Filter {

public void destroy() {
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding( "GBK ");
chain.doFilter(request, response);
}

public void init(FilterConfig conf) throws ServletException {
}

}


然后修改配置文件web.xml


<filter>
<filter-name> CharacterEncodingFilter </filter-name>
<filter-class> Filter.CharacterEncodingFilter </filter-class>
<init-param>
<param-name> encoding </param-name>
<param-value> GBK </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name> CharacterEncodingFilter </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>


用这个过滤器。所有的文件编码问题都解决了
------解决方案--------------------
private String ISO2GBmibm(String str) {
String returnValue = " ";
try {
returnValue = new String(new String(str.getBytes( "ISO8859-1 "), "utf-8 ").getBytes( "GBK "));

}
catch (Exception ex) {
logger.error(ex);
}
return returnValue;
}
------解决方案--------------------
我觉得的方案还是得从保存DB之前进行控制。


即使你的编码和DB的编码不吻合(这种case存在的可能性也很小)

你也应该按照DB的编码把数据存进去。
也就是说,存到DB的数据必须是db认识的编码,而不能是乱码。

然后从db里面取出来时,再转换成你所需要的编码格式。

既然已经是乱码了,可能存在数据丢失等等,不确定因素
即使有些能转过来 ,仍然会有很到的风险,希望lz考虑考虑。

=============

多嘴一下:lz遇到问题,不要钻牛角尖,而是要好好想想我为什么出现这么奇怪的case
如何通过其他的方法避免这样的case,也是程序员应该学会的。

------解决方案--------------------
把文本的属性里的编码类型改 改 或许这这样可以