2017-02-22 18 views
1

當我通過HTTP標頭值發送像â這樣的特殊字符時,我得到一個不同的Unicode字符request().getHeader()PlayFramework處理HTTP標題中的特殊字符

我知道不建議通過HTTP頭髮送特殊字符,但這是我的一個要求,首先我認爲這是因爲JVM編碼未設置爲UTF-8。但即使在設置後,我也遇到同樣的問題。

我見過有人問過類似的問題:

Play Framework Unicode symbols in HTTP Header

但還沒有得到答覆。

回答

0

這不是關於Play或Java,而是關於HTTP標準。您需要對這些字符進行編碼,但在HTTP標頭中發送非ASCII字符沒有保證。

How to send non-English unicode string using HTTP header?

Illegal characters in HTTP headers

Sending non-ASCII text in Http POST header

​​

即使RFC5987:

handling filename* parameters with spaces via RFC 5987 results in '+' in filenames

+0

是的,我UND遵守HTTP標準。但正如我發現Jetty服務器尊重file.encoding設置,即使HTTP頭。但Netty服務器嚴格遵守HTTP標準。我認爲唯一的方法就是用base64對它進行編碼。 – sasankad