解決jsp傳遞給struts action中文亂碼問題

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
	<h1>Hello World From Struts2</h1>
	<form action="hello">
		<label for="name">Please enter your name</label><br /> 
			<input type="text" name="name" /> 
			<input type="submit" value="Say Hello" />
	</form>
</body>
</html>

這裏名爲hello的action類代碼以下html

public class HelloWorldAction {
	   private String name;

	   public String execute() throws Exception {
	      return "success";
	   }
	   
	   public String getName() {
	      return name;
	   }

	   public void setName(String name) {
			this.name = name;
	   }
}

jsp把表單<input type="text" name="name" /> 的內容經過setName傳遞給HelloWorldAction的name屬性,這個過程使用的默認編碼是iso-8859-1,這就產生了亂碼,由於struts的編碼是UTF-8。java

解決辦法就是在setName裏編碼轉換。修改後的HelloWorldAction代碼jsp

import java.io.UnsupportedEncodingException;

public class HelloWorldAction {
	   private String name;

	   public String execute() throws Exception {
	      return "success";
	   }
	   
	   public String getName() {
	      return name;
	   }

	   public void setName(String name) {
	      try {
			this.name = new String(name.getBytes("iso-8859-1"),"utf-8");
		} catch (UnsupportedEncodingException e) {
			// TODO 自動生成的 catch 塊
			e.printStackTrace();
		}
	   }
相關文章
相關標籤/搜索