java過濾亂碼
1. java web 亂碼過濾器 filter 有什麼作用
注意問題:在學慣用selvert的過濾器filter處理中文亂碼時,在filter配置初始化時用了utf-8處理中文版亂碼,而在提交的jsp頁面中卻權用了gbk。雖然兩種都可以出來中文亂碼,但是卻造成了處理亂碼的格式不一致。所以編譯出錯。
2. Java亂碼問題。我配置一個Filter,但是搜索卻失效了。
web.xml裡面配置的<param-value>是utf-8么?
還有doFilter裡面
response.setContentType("text/html;charset=" + encoding);
request.setCharacterEncoding(encoding);
倆都內寫容上
3. 怎麼使用過濾器解決中文亂碼
首先有web.xml中配置
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>net.tom.servlet.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
//net.tom.servlet.filter.EncodingFilter是其包和類所在的地址
我給你的DEMO是統一設為utf-8
你可以改一下就可以了
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;
/********************
* 過濾編碼.用於把編碼統一為:utf-8
* @author jiangqh
*
*/
public class EncodingFilter implements Filter {
public EncodingFilter() {
}
public void destroy() {
}
/****************
* 過濾方法
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
}
}
4. Java亂碼問題 為什麼寫了過濾器都沒有用必須得一個欄位一個欄位的設置 資料庫裡面的是iso-8859-1類型的
你數復據庫欄位的類型必須是中文制類型,比如是UTF-8的
就像,你把一個中文字元 存入iso-8859-1的欄位,欄位根本就不支持中文,能不亂碼嗎,所以先要把資料庫的類型改成中文
過濾器的作用是把頁面和後台java程序這個部分的字元轉換,不管資料庫的
如果是後台java已經轉換完了,但是插入資料庫是出現問題,如果是mysql資料庫
jdbc:mysql://211.151.32.151:3306/zipcard?characterEncoding=UTF-8
加上?characterEncoding=UTF-8就可以了
5. java中處理中文亂碼所用的方法
過濾器對於用url方式的參數是沒有辦法過濾的
所以在以url(或表單提交方式是get的數據)傳值的時專候應該屬硬性轉碼:
String para =new String(str.getByte("iso-8859-1"),"UTF-8");
6. 在java中怎樣處理中文亂碼的問題(有幾種處理方式)
讀取文件的時候如果是用的read方法(位元組流),碰到中文輸出就是亂碼,然後存儲的時候設置下編碼為GBK或者是UTF-8形式即可,可以有效的解決亂碼問題。
可以通過BufferedReader 流的形式進行流緩存,之後通過readLine方法獲取到緩存的內容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最後一行不存在,為空結束循環
{
System.out.println(str);//原樣輸出讀到的內容
};
備註: 流用完之後必須close掉,如上面的就應該是:bre.close(),否則bre流會一直存在,直到程序運行結束。
可以通過「FileOutputStream」創建文件實例,之後過「OutputStreamWriter」流的形式進行存儲,舉例:
OutputStreamWriter pw = null;//定義一個流
pw = new OutputStreamWriter(new FileOutputStream(「D:/test.txt」),"GBK");//確認流的輸出文件和編碼格式,此過程創建了「test.txt」實例
pw.write("我是要寫入到記事本文件的內容");//將要寫入文件的內容,可以多次write
pw.close();//關閉流
備註:文件流用完之後必須及時通過close方法關閉,否則會一直處於打開狀態,直至程序停止,增加系統負擔。
7. [Java]如何解決亂碼問題
亂碼的話來,分為幾個位置的源亂碼。
一、是JSP頁面亂碼問題,
解決方式:<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
二、後台向前端傳輸字元串的的亂碼
解決方式: response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
三、Ajax非同步傳參時的亂碼問題
解決方法:contentType:"application/x-www-form-urlencoded; charset=utf-8",
四、myEclips或Eclips打開文件時亂碼
解決方法:右鍵該文件-porperties-把該文件調為UTF-8的格式
純手寫,請給採納
8. 關於java過濾器解決中文亂碼的
因為你遺漏襲了重要的一步。正確的方法如下:
if(encoding!=null){
//設置request字元編碼
request.setCharacterEncoding(encoding);
//設置response字元編碼
response.setContentType("text/html;charset="+encoding);
response.setCharacterEncoding(encoding);
}
//傳遞給下一個過濾器
chain.doFilter(request,response);
9. java filter 過濾器中文亂碼 怎麼解決啊
1、首先編寫一個Java類的代碼。操作步驟:
(1)在myeclipse中新建一個java類,
(2)單擊「Add」按鈕,在彈出來的對話框中「選擇介面」文本框中輸入Filter,
並選擇匹配好的類型javax.servlet
(3)單擊「OK」按鈕返回"New Java Class"對話,然後單擊「Finish」按鈕,就可以看到創建的過濾器框架:
過濾器類:Encoding.java,代碼如下:
package com;
import java.io.IOException;
import javax.servlet.*;
public class Encoding implements Filter {
protected String encoding=null;
protected FilterConfig config;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(request.getCharacterEncoding()==null){
//得倒指定的編碼
String encode=getEncoding();
if(encode!=null){
//設置request的編碼
request.setCharacterEncoding(encode);
response.setCharacterEncoding(encode);
}
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.config=filterConfig; //得到web.xml中的配置編碼
this.encoding=filterConfig.getInitParameter("Encoding");
}
protected String getEncoding(){
return encoding;
}
}
2、在web.xml文件寫入以下代碼:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<filter> <!-- 控制編碼 -->
<filter-name>EncodingFilter</filter-name>
<filter-class>com.Encoding</filter-class>
<init-param> <!-- 初始化參數 -->
<param-name>Encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
10. java 字元串中亂碼過濾
new String(str.getBytes(),"GBK");
用這方法,把亂碼正確顯示。當然編碼要自己設