`

JavaWeb中的乱码问题 Tomcate空格路径错误

阅读更多

1.Jsp页面要设置

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>

 这样才能写入中文字符。

 

2.request.setCharacterEncoding(charset);必须写在第一次使用request.getParameter()之前,这样才能保证参数是按照已经设置的字符编码来获取。
response.setCharacterEncoding(charset);必须写在PrintWriter out = request.getWriter()之前,这样才能保证out按照已经设置的字符编码来进行字符输出。

 

3.其中的2并不能解决所有的问题,对于post请求,无论是“获取参数环节”还是“输出环节"都是没问题的;对于get请求,"输出环节"没有问题,但是"获取参数环节"依然出现中文乱码,所以在输出时直接将乱码输出了。

原因是post请求和get请求存放参数位置是不同的:
post方式参数存放在请求数据包的消息体中。get方式参数存放在请求数据包的请求行的URI字段中,以?开始以param=value&parame2=value2的形式附加在URI字段之后。而request.setCharacterEncoding(charset); 只对消息体中的数据起作用,对于URI字段中的参数不起作用,我们通常通过下面的代码来完成编码转换:

String paramValue = request.getParameter("paramName");  
paramValue = new String(paramValue.trim().getBytes("ISO-8859-1"), charset);  

但是这样就必须每次都要修改,所以

解决方法:在tomcat_home\conf\server.xml 中的Connector元素中设置URIEncoding属性为合适的字符编码

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" 
redirectPort="8443" 
URIEncoding="UTF-8"
/>

 

4.jsp页面中使用properties文件,注意properties文件在src的根目录下

<%
 String path = getClass().getResource("/").getPath();//获得src的目录
 InputStream in = new FileInputStream(path + "confg.properties");//创建文件输入流
 Properties property = new Properties();
 property.load(in);
 int count = Integer.parseInt(property.getProperty("count"));
%>

 

5.properties不能写中文这类的占两个字节的字符,否则回报错误,some character cannot be mapped using “ISO8859-1” character encoding的提示 ,这是因为我们的文件默认的保存格式是ISO8859-1的,而这种格式只能放西欧文字,放入中文等就会出现问题,即使放进去也会在读的时候出现乱码,所以我们要想解决问题,必须,首先修改文件保存类型为UTF-8,这个怎么修改不写了,还是罗嗦两句吧,在要修改的文件中按键alt+enter出来property窗口,修改Text file Encoding就好了。

这样这首我们在存储的时候存储正确,只要在读的时候读取正确就OK了,我们可以用

new String(value.getBytes("ISO8859-1"), encoding);

 其中value就是要修改的字符串了。

String device = new String(property.getProperty("device" + i).getBytes("ISO8859-1"), "UTF-8") ;
out.print("<option value=\"" + device + "\">" + device + "</option>");

 写个工具转换类也可以

import java.io.UnsupportedEncodingException;
import java.util.Properties;

public class PropertiesUtil {
	/**
	 * 指定编码获取properties文件中的属性值(解决中文乱码问题)
	 * @param properties java.util.Properties
	 * @param key 属性key
	 * @return value 
	 */
	public static String getProperty(Properties properties, String key,
			String encoding) throws UnsupportedEncodingException {
		if (properties == null)
			return null;

		// 如果此时value是中文,则应该是乱码
		String value = properties.getProperty(key);
		if (value == null)
			return null;

		// 编码转换,从ISO8859-1转向指定编码
		value = new String(value.getBytes("ISO8859-1"), encoding);
		return value;
	}
}

如果你的应用创建中使用的系统默认编码,则如下转化:

PropertiesUtil.getProperty(properties, "TestKey", System.getProperty("file.encoding"));

 

6.Tomcate中空格路径错误

<%
 String path = getClass().getResource("/").getPath();
 out.println(getClass().getResource("/").getPath());
 out.println(getClass().getClassLoader().getResource("/").getFile());
 InputStream in = new FileInputStream(path + "confg.properties");
 Properties property = new Properties();
 property.load(in);
 int count = Integer.parseInt(property.getProperty("count"));
%>

 

输出的路径为下边

/E:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/CPE/WEB-INF/classes/

程序运行正常,但是一一打war包,放到Tomcate下就报错

同样输出路径为

/D:/Program%20Files/apache-tomcat-6.0.16/webapps/CPE/WEB-INF/classes/

愣是说

D:\Program%20Files\apache-tomcat-6.0.16\webapps\CPE\WEB-INF\classes\confg.properties 这个文件找不到。

解决方法,把Tomcate放到没有空格的路径之下,运行正常起来。

分享到:
评论

相关推荐

    关于处理Javaweb中中文乱码的问题文.pdf

    在 JavaWeb 技术开发中,中文乱码问题是由于 Java 系统的输入、输出和操作系统的默认编码字符集不一致导致的。 Java 系统内部使用 Unicode 来表示字符,但是在实际应用中,由于应用程序的运行环境不同,和各个本地...

    JavaWeb开发中文乱码问题解决方案

    在JavaWeb开发中,中文乱码问题是一个普遍且棘手的问题,主要出现在数据的输入、处理和输出过程中。中文字符由于其特殊的编码方式(如GBK、UTF-8等),在不同编码格式之间转换时容易出现乱码。为了解决这个问题,...

    关于处理Javaweb中中文乱码的问题[收集].pdf

    关于处理Javaweb中中文乱码的问题[收集].pdf

    JavaWeb的各种中文乱码终极解决方法

    JavaWeb 中文乱码问题是一个常见的问题,解决方法有多种,但都需要了解字符编码、响应头和 Servlet 输出机制等知识。本文将从Servlet 输出乱码、Servlet 文件下载乱码两方面详细讲解 JavaWeb 中文乱码的解决方法。 ...

    利用过滤器解决JavaWeb(JSP)的乱码问题

    在JavaWeb开发中,尤其是涉及到JSP页面时,乱码问题常常困扰着开发者。这个问题的出现通常是由于字符编码不一致导致的,而过滤器(Filter)作为一种强大的工具,可以有效地帮助我们解决这个问题。本文将详细讲解如何...

    JavaWeb乱码问题终极解决方案.docx

    响应乱码可能是因为数据库本身乱码、数据在 Java 代码中乱码、数据在浏览器显示的时候乱码、数据在从 Java 应用传到数据库的过程中乱码。不同的乱码原因需要不同的解决方案。 三、编码统一 编码统一是解决乱码问题...

    javaweb乱码

    本文将详细讲解如何全面解决Javaweb中的乱码问题,确保网页内容正确显示。 #### 一、配置服务器端编码 首先,我们需要确保服务器端的字符编码设置正确。对于Apache Tomcat服务器,可以通过修改`conf/server.xml`...

    JavaWeb开发技术-解决中文输出乱码问题.docx

    总结来说,解决JavaWeb开发中的中文乱码问题,关键在于正确地设置字符编码。使用`HttpServletResponse`的`setCharacterEncoding`和`setContentType`方法可以确保数据在传输过程中的编码与接收端的解码保持一致,从而...

    javaweb项目中乱码的处理

    ### javaweb项目中乱码的处理 在Java Web项目的开发过程中,经常遇到的一个问题是字符乱码。这不仅影响用户体验,还可能导致数据错误。本文旨在详细介绍如何解决Java Web项目中的乱码问题,包括如何统一开发环境、...

    JavaWeb开发技术-解决中文输出乱码问题.pptx

    在JavaWeb开发中,中文输出乱码问题是指在Web页面中输出中文字符时,出现乱码的现象。这是因为计算机在存储和传输中文字符时,需要使用特定的编码方式,而不同的操作系统和浏览器对中文字符的编码方式不同,从而导致...

    JavaWeb中字节乱码filter解决办法

    JavaWeb中字节乱码filter解决办法,其中包括tomcat各个版本进行字符设置.

    JavaWeb开发中的中文乱码问题分析及解决方案.docx

    ### JavaWeb开发中的中文乱码问题分析及解决方案 #### 摘要 在JavaWeb开发过程中,中文乱码问题是常见的技术挑战之一。该问题源于不同组件间的编码方式不一致,尤其是在涉及用户输入、数据库交互以及页面展示等环节...

    解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题.pdf

    解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题.pdf

    javaweb乱码问题分析与解决.md

    在JavaWeb开发中,乱码问题是开发者经常遇到的问题之一。它不仅会影响用户体验,还会对数据的正确性造成潜在威胁。本文将针对请求乱码及响应乱码两种情况进行深入剖析,并提供相应的解决方案。 #### 二、请求乱码...

    javaweb中路径问题

    ### JavaWeb中的路径问题解析 在JavaWeb开发中,路径问题常常困扰着许多开发者,特别是对于初学者来说,理解各种路径及其应用场景尤为重要。本文将基于给出的信息,详细解析JavaWeb项目中涉及到的各种路径问题,...

    超全面javaweb第4天- 05 xml的中文乱码问题解决

    超全面javaweb第4天-_05_xml的中文乱码问题解决

    JavaWeb应用中文乱码的解决方案 (1).pdf

    JavaWeb应用中文乱码问题是一个常见的困扰,尤其是在处理用户输入或者显示中文字符时。这个问题主要源于字符编码的不一致,即不同的系统或组件使用了不同的字符集,导致数据在转换过程中出现混乱。以下是对JavaWeb...

    JavaWeb中文乱码处理研究 (2010年)

    在JavaWeb应用开发常见的问题中,中文的乱码问题在页面中没有统一的方法解决,造成程序员浪费大量的时间与精力且代码效率不高,因此提出了新的乱码算法,并设计了通用的乱码处理器,提高了程序员的工作效率。

    javaweb乱码解决方法

    乱码问题的根源在于不同环节(如客户端、服务器、数据库等)对字符集的处理不一致,导致数据在传输过程中被错误地解码。为了解决这一问题,开发者需要在多个层面进行设置,确保数据在各个环节都能被正确处理。以下是...

Global site tag (gtag.js) - Google Analytics