国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

JSP技巧:從原理上解決Tomcat中文問題

2024-09-05 00:19:52
字體:
來源:轉載
供稿:網友

  很多開源軟件都有國際化和本地化的問題,其實國際化本沒有那么復雜,只是總有些公司希望通過拒絕國際標準來提高市場占有率,所以也就漸漸導致了現在的情況。很多開源軟件首要支持的便是utf編碼,然后才是其他編碼。(by gashero)當然也有些不著調的軟件首選的是iso-8859-1編碼,甚至是ascii編碼。好了,下面先講講編碼,因為tomcat也是一種不著調的軟件。

  常見的中文編碼有gb2312、gbk、gb18030等等,當然沒有包括繁體中文,這些編碼都是表示編碼,而并非是顯示編碼。現在越來越多的軟件,在其核心使用的顯示編碼或者說處理編碼,是unicode編碼。unicode編碼使用2字節表示了世界上幾乎所有的文字符號,作軟件的內部國際化處理再適合不過了。

  只是有些齷齪公司,為了商業目的,對內核的unicode編碼api全部屏蔽,對外只提供本地化編碼。(by gashero)比如m$公司在中文軟件上就主推gbk編碼。

  還有一個問題就是用c/c++編寫的很老的軟件,字符串結束標志是'/0',而使用unicode的話,會無故的截斷一些字符串。所以utf-8就應運而生了,這種變長編碼既可以減小字符串的體積,也可以防止階段而傳輸unicode編碼。

  至于傳統的英文編碼,最常見的就是兩種。一是ascii,這種字符集高位為0,用7位表示數據。另一種是iso-8859-1,每個字符1字節,用8位表示一個字符。

  tomcat的內置編碼就是使用了iso-8859-1。這也是本文最關鍵的一句,各種技巧的根本。

  由此可知由網頁所提交的數據就需要從iso-8859-1解碼,如下是獲得提交參數number的例子。

  string number=new string(request.getparameter("number").getbytes("iso-8859-1"),"utf-8");

  這句就成功的實現了從iso-8859-1向utf-8編碼的轉換。

  有經驗的讀者應該遇到過通過<jsp:param>標簽傳遞網頁間參數時出錯的問題。(by gashero)接收到的字符串只要是無論如何都是一堆問號。其實這也是tomcat內部編碼所導致的。如果可以順應tomcat的內部編碼就可以傳遞中文字符串了。

  比如一個頁面間的內部重定向:

  <?xml:namespace prefix = jsp /><jsp:forward page="index.jsp">

  <jsp:param name="name" value="<%=new string(" % 中文參數?.getbytes(?utf-8?),?iso-8859-1?)>" />

  </jsp:forward>

  而在目的頁面接收參數的時候也需要再次從iso-8859-1編碼轉換到utf-8編碼。這樣就實現了在頁面之間傳遞中文參數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪雅县| 仁寿县| 安陆市| 桓仁| 棋牌| 怀来县| 大名县| 漯河市| 宁陕县| 吉林省| 镇江市| 临高县| 遵化市| 六安市| 霸州市| 新龙县| 建始县| 泸水县| 许昌市| 怀宁县| 瑞安市| 高州市| 武乡县| 长治市| 大同县| 乐亭县| 青河县| 乌鲁木齐县| 石渠县| 介休市| 枣强县| 嘉峪关市| 台南县| 两当县| 博乐市| 山东省| 罗定市| 乃东县| 竹山县| 山东省| 满洲里市|