2012-12-07 69 views
0

我們在學校項目中有jsp格式的變音符號問題。我們使用Spring 3.0。在JSP表單中,我們有可以包含帶有重音符(捷克語,f.e「šáříěá」)的單詞的輸入。當我開始項目並在這些輸入中寫入變音詞併發送表單時,控制器中立即出現錯誤的值。變音字母有奇怪的形式,例如「Ä???Ä」。 以下代碼是我們的形式。jsp格式的變音符號

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Nový prostor</title> 
</head> 
<body> 
    <h1>Nový prostor</h1> 
    <form:form method="POST" commandName="PLACE" > 
     <fieldset> 
      <legend>Adresa prostoru</legend> 
      <table> 
       <tr> 
        <td><form:label path="name">Název prostoru</form:label></td> 
        <td><form:input path="name" /></td> 
       </tr> 
       <tr> 
        <td><form:label path="street">Ulice a č.p.</form:label></td> 
        <td><form:input path="street" /></td> 
       </tr>  
       <tr> 
        <td><form:label path="zip_code">PSČ</form:label></td> 
        <td><form:input path="zip_code" /></td> 
       </tr> 
       <tr> 
        <td><form:label path="city">Město</form:label></td> 
        <td><form:input path="city" /></td> 
       </tr> 
      </table> 
     </fieldset> 
     <fieldset> 
      <legend>Parametry prostoru</legend> 
      <table> 
       <tr> 
        <td><form:label path="rows">Počet řad</form:label></td> 
        <td><form:input path="rows" /></td> 
       </tr> 
       <tr> 
        <td><form:label path="columns">Počet sedaček v řadě</form:label></td> 
        <td><form:input path="columns" /></td> 
       </tr>  
       <tr> 
        <td><form:label path="note">Poznámky</form:label></td> 
        <td><form:textarea path="note" /></td> 
       </tr> 
      </table> 
     </fieldset> 
     <input type="submit" value="Vytvořit">  
    </form:form> 
</body> 

這是電腦板:

@Controller 
@RequestMapping("/newPlace") 
public class NewPlaceController { 
@Autowired 
private PlaceService placeService; 
/** 
* Pri pozadavku typu get vrati nazev jsp ktere se ma renderovat, nabinduje Complex place do formualre 
* @param model 
* @return 
*/ 
@RequestMapping(method=RequestMethod.GET) 
public String showNewPlaceForm(Model model){ 
    model.addAttribute("PLACE", new ComplexPlace()); 

    return "newPlaceForm"; 
} 
/** 
*Pri pozadavku POST ulozi data z formulare do DB 
* 
* @param place 
* @param result 
* @return 
*/ 
@RequestMapping(method=RequestMethod.POST) 
public String createNewPlace(@ModelAttribute(value="PLACE") ComplexPlace place, BindingResult result){ 
    System.out.println(place.getName()); 
    placeService.buildPlaceService(place); 
    placeService.PersistNewPlace(); 
    return "/index"; 
} 

}

的System.out.println寫在控制檯上奇怪的值。知道有人問題在哪裏?我想說一句,我們對Java Web編程有很小的看法。 感謝

+2

你是否堅持這個值到數據庫?如果是,那麼檢查數據庫中的值是否正確,因爲'System.out'可能不會以UTF-8打印它們。你還使用了什麼應用程序服務器? –

+0

是的,數據是持久的。我們使用Hibernate。 Applicaton服務器是GlassFish 3+。數據庫中的數據也是錯誤的。但數據庫中的變音符值與控制檯中的不同,但也是錯誤的。是可能的,數據庫的設置是錯誤的,我們必須修復它。但我不知道爲什麼在控制檯中是錯誤的文字。我必須嘗試在文本文件中保存值,如果有可能System.out.println()不能打印UTF-8。 –

+1

其實你不需要控制檯,對吧?你只是用它來檢查值?如果是這樣,那麼忘掉控制檯並修復你的數據庫編碼。 –

回答

0

你不能使用任何其他語言然後其他標準english.if要做到這一點,然後ü必須使用任何標準的免費的Unicode converter.convert你的性格,把自己的Unicode字符在運行時將其轉換用你原來的語言......我希望它適合你。

+0

我現在沒有解決控制檯問題,因爲System.ou.print()可能在UTF-8上有問題。現在我想解決數據庫設置。你的答案只與插入數據庫或你的提示有關的控制檯輸出有關嗎?我很抱歉,愚蠢的問題:-) –

+0

這個問題解決了:-)。 http://stackoverflow.com/questions/11758094/hibernate-encodes-wrong-while-persisting-objects-utf-8 –