求助,各位帮帮忙,为什么我输入某些中文会出现乱码,大部分(甚至98%)都不会出现乱码?出现乱码的文字如:勍.大家有没有遇到过,在线等待。谢谢了
解决方案 »
- 刚开始学,spring - hibernate 整合时,出现了错误,麻烦大伙帮个忙啊
- jsp页面 循环取值
- 大家在开发中使用JSTL吗?
- 关于Myeclipse配置问题
- 关于开源CMS
- JDBC rollback failed, Hibernate出错,求解!求解!
- 从一个J2EE项目跳转到另外一个J2EE项目
- Hiberante get&delete 出现NonUniqueObjectException异常,请教
- java中 该怎么比较两个xml文件的 有没有什么好点的方法?
- 请教高手:jboss3.0.7中布署一个EJB时提示EJB QL 出错,但在WEBLOGIC7中就能正常布署和使用。出错如下:
- XFire 返回值是属性Bean里有Map时 怎么设置配置文件或有什么其他处理方法得到Map?
- 在线等,急.....谢了!
如果是jsp中的话 可以这样写
如:
String name = request.getAtrriubt("userName");
name = new String(name.getByte("ISO-8859-1"),"gb2312")
name = new String(name.getBytes("ISO-8859-1"),"UTF-8");
用这个把你取到的字符串给转换下。
建议用
new String(name.getBytes("ISO-8859-1"),"UTF-8")转换
或者你可以改变编码;使用UTF-8/GBK
<%@ page contentType="text/html;charset=GBK" %>如果你确定是因为本地浏览器问题造成,可能浏览器默认是英文字符集或GB2312,那么你在页面上加一行:
<meta http-equiv="Content-Type" content="text/html; charset=GBK">一下情况可能不是你遇到的,不过作为以后参考:
如果你是使用weblogic,而WebLogic不能正确编译你的JSP文件,那么在你的WEB-INF文件夹下编辑weblogic.xml,如果没有,就创建一个,在其中加入一下内容,重启当前应用即可:
<jsp-descriptor>
<jsp-param>
<param-name>compilerSupportsEncoding</param-name>
<param-value>true</param-value>
</jsp-param>
<jsp-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</jsp-param>
</jsp-descriptor> 如果你是传递中文,如通过request.getParameter("")获取出来的中文不对的话,此时,在你的web.xml中加入以下内容:
<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GBK</param-value>
</context-param>如果WEBLOGIC从数据库中读取出来是乱码,而数据库编码是GBK,那么此时将WebLogic的读取方式修改一下,启动时增加编码设置:
Weblogic.codeset=GBK
String name = request.getParameter("realName");
name = new String(name.getBytes("ISO-8859-1"),"UTF-8");
<constant name="struts.i18n.encoding" value="utf-8"></constant>
或在struts.properties中写入
struts.i18n.encoding=utf-8
要用就用GBK或UTF-8
建议使用UTF-8.与国际接轨
而且在网络上传输也会比较 快
request.setCharacterEncoding("GB2312");还有就是你的提交最好用 POST方法
UTF-8应该不会出现,数据库没问题(输入数据,里面都乱码)吧!
GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个字符。GB 2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBK及GB 18030汉字字符集的出现。尽量使用统一的编码`不要几个一个网页使用UTF8,一个使用GB2312.这样也会造成乱码。
JSP HTML, 知识 || 趣闻, by 三少.
1。数据库在创建的时候,指定其编码为UTF-8. (1)oracle:
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
———————————————
SIMPLIFIED CHINESE_CHINA.UTF8 (2)postgres:
CREATE DATABASE "EnterInfoPortal"
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default;
GRANT ALL ON DATABASE "EnterInfoPortal" TO postgres;
jdbc url参考:jdbc:postgresql://127.0.0.1/FINANCIAL?charSet=UTF8
(3)DB2:
db2 "CREATE DATABASE dbname USING CODESET UTF-8 TERRITORY CN"
jdbc url无须指定编码。
(4)SqlServer:
很久没用过,待补充 (5)MySQL(没用过,应网友要求,抄来的,具体能通过否待验证):
安装mysql的时候选utf-8;管理工具安装后,首先设置管理工具 client编码为中文的gb2312 gbk,这与mysql无关
建库的时候选utf-8
建表的时候选utf-8 utf_unicode_ci 两项
建字段的时候选utf-8 utf_unicode_ci 两项
jdbc url参考:jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
————————————————
2。新建web项目别的先不干,先选中项目:右键->properties->Info->Text file encoding:Other:UTF-8。但我用的JBuilder 2007似乎在JS文件上需要重新弄一下:新建*.js文件,右键该文件->properties->Info->Text file encoding:Other:UTF-8。再把原来带中文的^C^V过来,save。如果是把js所在的目录设为UTF-8,然后新建js文件,貌似不能继承,得一个个这么^C^V,烦。
————————————————
3。tomcat的配置为了保证某些中文文件名的文件能够被正确访问,需要修改tomcat/conf/server.xml,增加:<Connector port="8088" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />注意: 开发时,修改了tomcat安装目录,怎么还是乱码?CAUSE: 开发时,JBuilder2007(eclipse maybe)并没有发布到tomcat安装目录下,而是在workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\conf有个相应的server.xml文件,需要改这个,在JB下才有效。具体tmp0/tmp1/tmpN由发布的次数/项目个数来定。
————————————————
4。jsp页面保证任何jsp的第一行都是:<%@page contentType="text/html; charset=UTF-8"%>并且在jsp页面不要再出现charset的字样!有的同志第一行按上面所述指定了,下面又来一个:<META http-equiv='Content-Type' content='text/html;charset=gb2312'>更有甚者,居然在包含的JS里面来这么一句:document.charset='gb2312';你说在JSP里面<script language="JavaScript" type="text/JavaScript">
document.charset='gb2312';
</script> 写也就罢了,我还好找些,你把它另外存个文件,然后引入,不是磨人吗?须知编码不统一,才是乱码之根源啊,娘希匹!
————————————————
5。struts1.X的action编码处理struts2.X没用过,应该可以用相应的办法来做,比如弄个Filter (1)建一个Servlet(想了半天,这里应该就是Filter类似的作用),code:
Java code
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;import org.apache.struts.action.*;public class ComicActionServlet extends ActionServlet {
public static final long serialVersionUID = -1L; protected void process(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8"); super.process(request, response);
}
}
(2)web.xml配置所有的Action都从这里经过,web.xml: XML code
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>ReportEngineServlet</servlet-name>
<servlet-class>servlets.ReportEngineServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>BackgroundServlet</servlet-name>
<servlet-class>
com.socix.comic.common.BackgroundServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
com.socix.comic.common.ComicActionServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/config/struts-config.xml,
/WEB-INF/config/struts-config-admin.xml,
/WEB-INF/config/struts-config-series.xml,
/WEB-INF/config/struts-config-chapter.xml,
/WEB-INF/config/struts-config-hotnew.xml,
/WEB-INF/config/struts-config-stat.xml
</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ReportEngineServlet</servlet-name>
<url-pattern>/servlets/ReportEngineServlet</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/WEB-INF/tld/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/tld/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/tld/struts-nested.tld</taglib-uri>
<taglib-location>
/WEB-INF/tld/struts-nested.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/tld/struts-template.tld</taglib-uri>
<taglib-location>
/WEB-INF/tld/struts-template.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/tld/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>
</taglib>
</web-app> (3)注意上面的web.xml里面:<?xml version="1.0" encoding="UTF-8" ?>
(4)还没完,在web.xml里面用到的struts的配置文件,其头部都和web.xml一样,应为:
<?xml version="1.0" encoding="UTF-8" ?> ———————————————— 6 最后还有spring的配置 <!– 用于解决请求编码乱码问题 –>
<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>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1.mysql utf8,包括url已加characterEncoding=utf8
2.所有配置文件 utf8编码
3.struts2 utf8已配(默认就是)
4.tomcat URIEncoding="UTF-8" 已配
5.jsp已写<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>