這是這個問題的延續:Java Jersey: Receive form parameter as byte array如何讓IE發佈UTF-8中的FORM數據?
即使包含頁面使用ISO-8859-1字符集,我也需要以UTF-8格式發佈表單數據。我找到了FF的解決方案,但不適用於IE。 以下是整個故事:
我使用Jersey REST Web服務接收從簡單html發佈的數據<FORM>。 當頁面使用UTF-8字符集時,發佈的數據也使用UTF-8編碼,並且一切正常。 但是,當頁面使用ISO-8859-1字符集時,FORM數據也會使用ISO-8859-1發佈,而Jersey有特殊字符的問題(可能是因爲它期望數據以UTF-8形式出現)。
澤西方法是這樣的:
@Path("/someMethod")
@POST
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String someMethod(@FormParam("someParam") String someParam)
{
...
}
當然,如果我改變整個頁面編碼爲UTF-8,一切工作正常,問題是,我動態添加的形式可能使用不同的現有頁面編碼(在其他作品中,我不能篡改頁面編碼)。
我有解決方案適用於FF但不適用於IE。如果我將accept-charset="utf-8"
屬性添加到發佈數據的FORM,FF無論包含頁面編碼都使用utf-8正確編碼所有發佈的數據,但這在IE中不起作用。
任何想法? 謝謝!
不能傷害提到,這是這個問題的延續:http://stackoverflow.com/questions/6282626/java-jersey-receive-form-parameter-as-byte-array – MatrixFrog 2011-06-09 22:43:34
其實你可能想要用html,跨瀏覽器和IE等標籤重新標記這一點。在這一點上,您使用JAX-RS/Jersey的事實並不重要。重要的是你的服務器期望UTF-8,但IE正在給它ISO-8859-1。所以在這一點上,這是一個瀏覽器問題,我看到它的方式。 – MatrixFrog 2011-06-10 01:14:42
謝謝,你說得對。編輯! – 2011-06-10 08:12:00