JAVAEE_Servlet_17_关于乱码问题

关于乱码问题

   * 数据传递过程中的乱码
	            
        解释:数据传递过程中的乱码是指:  将数据从浏览器发送给服务器的时候,服务器接收到的数据是乱码的。
		        
	   - ISO-8859-1 是国际标准码,不支持中文编码,它兼容ASCII码,又称为latin1编码,不管是哪个国家的文字,在浏览器发送给服务器的时候,都会采用ISO-8859-1编码进行编译。
		       
	   - 乱码原因:浏览器会先把将要发送给服务器的数据,转化成对应的ISO-8859-1编码,然后将编码后的数据发送给Web服务器,而服务器并不知道在转化之前数据采用的是哪个国家的语言。

		  - 解决方式 1:先将服务器中接收到的数据采用ISO-8859-1编码方式解码,解码成为二进制数据,然后给定一种支持简体中文的编码方式重新编码组装。
		        
		     // 先解码 ISO-8859-1

			byte[] bytes= 接收数据的变量名.getBytes("ISO-8859-1");

		    // 再编码 使用  GBK / utf8 / gb2312

			new String(bytes,"GBK/utf8/gb2312"); // 此处保证和HTML和浏览器的编码方式一致



		  - 解决方案 2:(只支持POST请求,只对请求体编码,并且要设置在取数据之前)
		         
			 - void   setCharacterEncoding(String 编码名);

			  request.setCharacterEncoding("UTF-8");



		  - 解决方案 3: (只支持GET请求,只对请求行编码)
		           
			   1. 修改  Catalina_HOME/conf/server.xml  (Tomcat根目录)

			   2. 在 server.xml中找到  <Connector port="8080"  protocol="HTTP/1.1">  在该标签内添加属性 URIEncoding="UTF-8"/>,也就是: <Connector port="8080"  protocol="HTTP/1.1"  URIEncoding="UTF-8"/>

			   3. <Connector > 标签中都可以写哪些属性?   tomcat-9\webapps\docs\config\Http.html     该html中的属性都可以写。
		
		
	
    *  数据展示过程中的乱码
	          
	   解释:数据展示过程中的乱码是指:数据显示在浏览器页面的时候出现乱码
		      
		 
             -  解决方法1: - 设置响应的字符类型,以及对应的编码方式

		              response.setContentType("text/html;charset=UTF-8");


	     -  解决方法2: - 设置HTML文件的编码方式和浏览器编码方式一致
		                      
			     <meta  content="text/html"  charset="UTF-8">


     *  数据保存过程中的乱码
	       
	   解释:数据保存过程中的乱码是指: 数据保存到数据库中表里的时候出现乱码
	            
	     - 情况1: 在保存前就出现乱码,保存到数据库中就会乱码。找出为什么乱码,采取上面的方法解决乱码问题。

	     - 情况2: 保存前不是乱码, 但是因为数据库不支持简体中文,所以出现乱码。 设置数据库的编码方式。
posted @ 2021-04-21 20:28  失昼  阅读(55)  评论(0)    收藏  举报