JavaScript與Servlet的中文參數傳遞問題

當前端要將資料透過Http的方式將參數送往後端時
遇到中文字或是其他特殊字元常常會發生亂碼的問題
尤其是現在使用AJAX的頻率越來越高,這篇整理了我最後解決中文的方式


前端:JavaScript

在Javascript端有三種編碼的方式,讓中文或特殊字元可以正常的送至後端

方法一: escape()

不編碼的符號包括: @*/+
escape 不編碼 + (加號), 將使表單欄位資料中有空白的處理(用 + 連結字串)造成問題。且 escape 在處理非 ASCII 語系的字元會有問題。所以, 除非特例, 應盡量避免使用 escape()。

方法二: encodeURI()

不編碼符號包括: ~!@#$&*()=:/,;?+'
用 encodeURI() 會比使用 escape() 轉換 URI 正確。比較要注意的是這個方法不處理 ' (單引號)。

方法三: encodeURIComponent()

不編碼符號包括: ~!*()'
encodeURIComponent() 是適合大部分單一 URI 的編碼方法。這個方法通常可以正確的編出正確的編碼, 例如要編碼一段有 flash 的 html(參數有 & 符號), 如果用其他的方法, 大概解碼後 flash 也不能看了。比較要注意的是這個方法也不處理 ' (單引號)。

參考來源:http://diary.tw/march/category/Javascript

經過測試,在處理中文字時,方法二跟三都可以,方法一會出現問題

後端:Java Servlet


網路上找到最多的資料都是透過
java.net.URLEncoder.encode("轉碼文字","utf-8")與
java.net.URLDecoder.decode("轉碼文字","utf-8")來做編碼轉換

但是試過多種排列組合都無法成功

最後找到這個方式終於成功的將JavaScript編碼的資料轉回中文
String result = new String("轉碼文字".getBytes("ISO-8859-1"),"UTF-8");

總算把這問題解決了^^

繼續閱讀...

您的身體需要哪種水果



《頭髮》染髮燙髮:酪梨

染髮燙髮過程會奪走頭髮的水分和油脂,頭髮變得乾枯。

成熟的酪梨中含有30的珍貴植物油脂--油酸,

對乾枯的頭髮有特殊功效。

《大腦》過度用腦:香蕉

過度用腦導致人體內維生素、礦物質及熱量缺乏,除了大腦

疲憊,還常常感到情緒低落。此時補充香蕉可提供所需營養

物質並緩解消極情緒。由於過度用腦消耗多種維生素,因此

營養師建議同時補充善存等多維生素片。

《眼睛》過度用眼:木瓜

長時間盯著電腦屏幕或電視屏幕,過度用眼,則視網膜感光

所依靠的關鍵物質維生素A大量消耗,眼睛感到乾燥、疼痛

、怕光,甚至視力下降。

此時就需要食用可提供大量維生素A的木瓜。

《牙齦》牙齦出血:奇異果

牙齦健康與維生素C息息相關。缺乏維生素C的人牙齦變得脆

弱,常常出血、腫脹,甚至引起牙齒鬆動。奇異果的維生素C

含量是水果中最豐富的,因此是最有益於牙齦健康的水果。

《心臟》心臟病史:葡萄柚

膽固醇過高嚴重影響心血管健康,尤其有心臟病史者,更要注

意控制體內膽固醇指標。醫學界公認最具食療功效的葡萄柚,

其瓣膜含天然果膠能降低體內膽固醇,預防多種心血管疾病。

《肺臟》長期吸煙:葡萄

長期吸煙的肺部積聚大量毒素,功能受損。葡萄中所含有效成

分能提高細胞新陳代謝率,幫助肺部細胞排毒。葡萄還具有祛

痰作用,能緩解因吸煙引起的呼吸道發炎、癢痛等不適症狀。

《肌肉》肌肉拉傷:菠蘿

肌肉拉傷後,組織發炎、血液循環不暢,受傷部位紅腫熱痛。

菠蘿所含的菠蘿蛋白成分具有消炎作用, 可促進組織修復,還

能加快新陳代謝、改善血液循環、快速消腫。.

《皮膚》預防皺紋:芒果

若皮膚膠原蛋白彈性不足就容易出現皺紋。芒果因為含有豐富

的β-胡蘿蔔素和獨一無二的,能激發肌膚細胞活力,促進廢

棄物排出,有助於保持膠原蛋白彈性,有效延緩皺紋出現。

《血液》供氧不足:櫻桃

容易疲勞在多數情況下與血液中鐵含量減少,供氧不足及

血液循環不暢有關。吃櫻桃能補充鐵質,其中含量豐富的

維生素C還能促進身體吸收鐵質,防止鐵質流失,並改善

血液循環,幫助抵抗疲勞。

《腳部》腳氣困擾:柳橙

體內缺乏維生素B1的人容易有腳氣困擾。選擇富含維生素B1

柳橙,它並幫助葡萄糖新陳代謝,能有效預防和治療腳氣病。

繼續閱讀...