<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小菜毛毛技術分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks

    1.UTF-8

    原來用慣了GBK,被大家一再慫恿,才下定決心整個項目換用UTF-8編碼。

    編碼問題幾乎與所有國內Java項目相伴而生,不同內核的Linux、英文版日文版的WindowsXP總是讓GBK很頭痛,而改用UTF-8后,忽然就輕爽了,UTF-8,全世界語系連馬爾代夫語都有自己的座位,實在找不到理由為什么還要用只支持大中華的GBK。

    而且Springside也成了一個帶有大量UTF-8中文注釋的項目。

    原GBK項目的轉換方法

      把自己當成車衣廠女工,機械的使用UltraEdit和EditPlus的轉換功能,忙活一兩個小時,怎么都可以轉完所有文件了。

      其中UltraEdit的轉換方法是文件--〉轉換--〉ASCII to UTF-8(Unicode編輯)。最好在Advanced-〉本地代碼頁那里也設一下UTF-8。

      然后就可以用設了UTF-8選項的IDE如IDEA,Eclipse直接編輯了。

    2.國際化 I18N

          后臺的menu.jsp 和 editBook.jsp 還有業務異常類,演示了i18N的應用。

    2.1 i18N基礎      

      1.編寫messages.zh_CN.properties

         用中文寫完后,用java帶的native2ascii.exe或者ant的native任務把它轉成非人類的Unicode編碼。

      2.在純Java API里,國際化是這樣做的:

    ResourceBundle rb = ResourceBundle.getBundle("messages");
    String welcome = rb.getString("welcome");
    String welcomeCalvin = MessageFormat.format(welcome,new String[]{"calvin"});

      第一二句從classpath里找到messages_zh_CN.properties,讀出"歡迎你,{0}"字樣。

      第三局把上文格式化成"歡迎你,calvin" 

     3.在Servlet環境下,國際化是這樣做的   

    51.la 專業、免費、強健的訪問統計 則靠<fmt:message>tag

     

    <%@ taglib uri="
    <fmt:message key="welcome"/>

          可以用context-param來定義默認的properties文件

        <context-param>
                <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
                <param-value>messages</param-value>
        </context-param>

         不過這樣定義的缺點是只能定義一個文件,如果所有信息都集中在一個文件會好長,而如果有多個properties,就惟有在頁面用<fmt:bundle>綁定了。

    2.2 Spring的messageSource增強

    Spring增加了MessageSource的概念

      一是ApplicationContext將充當一個單例的角色,不再需要每次使用i18時都初始化一次ResourceBundle

      二是可以代表多個Resource Bundle.

      在ApplicationContext的定義文件中,增加如下節點: 

    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    
        <property name="basename" value= "messages"/>
    </bean>

    在pure Java中

    context.getMessage("welcome", null, LocaleContextHolder.getLocale())

    而經Spring MVC JSTL ViewResolver調用的JSP,<fmt:message>將繼續發揮它的功效。

    不過這里挺麻煩的,第一如果不是從MVC JSTL轉的,messageSource的定義就會失效。而如果定義了<context-param>,則messageSource的定義又會失效.......

     還有,<spring:message> 雞肋一塊,因為它如果找不到key對應的就會拋異常,好恐怖。

    還還有,spring還有有趣的theme機制,和i18n一樣的原理,解決了"做成圖片的文字"的國際化,讓不同語言的美術字圖片的路徑分別定義在theme_zh_CN.properties和theme_en_US.properties里面。


    只有注冊用戶登錄后才能發表評論。


    網站導航:
    相關文章:
     
    主站蜘蛛池模板: a毛片在线免费观看| 久久久www成人免费毛片| 热99re久久免费视精品频软件| 中文字幕亚洲乱码熟女一区二区| 亚洲熟妇无码av另类vr影视| 97性无码区免费| 亚洲综合区小说区激情区| 亚洲中文无码永久免费| 久久久久久久91精品免费观看| 亚洲精品国产成人99久久| 日韩av无码免费播放| 亚洲线精品一区二区三区影音先锋| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲日本VA中文字幕久久道具| 在线免费观看国产| 亚洲精品视频在线| 日韩精品无码一区二区三区免费| 亚洲无线观看国产精品| 国产久爱免费精品视频| 亚洲国产高清精品线久久| 中文在线观看永久免费| 91亚洲国产在人线播放午夜| 一个人免费观看视频www| 狠狠入ady亚洲精品| 亚洲日本va在线视频观看| 95免费观看体验区视频| 亚洲成av人无码亚洲成av人| 国产av无码专区亚洲国产精品| 日韩内射激情视频在线播放免费| 亚洲第一男人天堂| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 午夜成人无码福利免费视频| 亚洲av激情无码专区在线播放| 免费精品人在线二线三线区别| 精品免费AV一区二区三区| 亚洲香蕉网久久综合影视 | 免费观看一级毛片| a在线观看免费网址大全| 亚洲一区中文字幕在线观看| 亚洲精品国自产拍在线观看| 91精品免费在线观看|