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

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

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

    posts - 36, comments - 419, trackbacks - 0, articles - 0
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    問題:
                項(xiàng)目在本機(jī)開發(fā)編譯打包后發(fā)布到法國(guó)的服務(wù)器,代碼中的中文全部亂碼,就算是最簡(jiǎn)單的代碼System.out.println("中文"),打印出來的也是亂碼。

          代碼在本地的服務(wù)器測(cè)試都正常。

          法國(guó)服務(wù)器的環(huán)境:window 2003 中文版。

    解決:

               在網(wǎng)友imasmallbird的指引下,發(fā)現(xiàn)是2個(gè)服務(wù)器的file.encoding的不同,本地服務(wù)器是GBK,而法國(guó)服務(wù)器是Cp1252,所以會(huì)產(chǎn)生亂碼。

       把法國(guó)服務(wù)器的區(qū)域設(shè)置改成中國(guó)后,file.encoding就變成GBK,這樣可以解決這個(gè)問題,但因?yàn)楹芏嘣虿荒苤苯痈膮^(qū)域設(shè)置,比如改了區(qū)域設(shè)置后時(shí)間就不是法國(guó)時(shí)間。

       目前解決辦法如下:
              1. 本地編譯打包不用變,本地編譯采用的是GBK編譯的(默認(rèn)采用系統(tǒng)字符集編譯)

              2. 在法國(guó)服務(wù)器的tomcat上加上JAVA的啟動(dòng)參數(shù) -Dfile.encoding=GBK

    重啟tomcat,一切正常了。

    解決了該問題后,順便找了些JAVA的中文亂碼的資料看了下,簡(jiǎn)單的總結(jié)下:

           從Java 源代碼到得到正確的結(jié)果,要經(jīng)過 “Java 源代碼-> Java 字節(jié)碼-> 虛擬機(jī)->操作系統(tǒng)->顯示設(shè)備”的過程。在上述過程中的每一步驟,我們都必須正確地處理中文的編碼,才能夠使最終顯示正確的結(jié)果。

           "Java 源代碼-> Java 字節(jié)碼":該階段就是調(diào)用javac 進(jìn)行編譯的階段,javac默認(rèn)采用系統(tǒng)字符集,比如我們本地機(jī)器急就是GBK,如果想用其他的編碼,比如UTF-8,可以加上 -encoding UTF-8

          "Java 字節(jié)碼-> 虛擬機(jī)->操作系統(tǒng)" :該階段首先需要JRE或者JDK支持多語(yǔ)言(下載JRE的時(shí)候會(huì)讓你選擇英文版還是多語(yǔ)言版),然后就是虛擬機(jī)啟動(dòng)的時(shí)候使用什么字符集,默認(rèn)也是采用當(dāng)前系統(tǒng)的字符集,如需要修改字符集,加上JAVA的啟動(dòng)參數(shù),-Dfile.encoding=GBK

          "操作系統(tǒng)->顯示設(shè)備":該階段主要就是需要操作系統(tǒng)支持顯示中文就可以,就是安裝了中文字體。

          看到這里后重新看我們的亂碼問題,我們?cè)诒镜鼐幾g(Java 源代碼-> Java 字節(jié)碼 階段)默認(rèn)采用了GBK字符集,而"Java 字節(jié)碼-> 虛擬機(jī)->操作系統(tǒng)" 階段是在法國(guó)服務(wù)器上進(jìn)行,也是采用了默認(rèn)的字符集,但這里的默認(rèn)字符集確實(shí)Cp1252,因字符集不一致,所以就會(huì)亂碼。

    PS:以上屬于個(gè)人理解,個(gè)人水平有限,如說的有問題,還請(qǐng)大蝦們指點(diǎn)。



    [作者]:BearRui(AK-47)
    [博客]: http://m.tkk7.com/bearrui/
    [聲明]:本博所有文章版權(quán)歸作者所有(除特殊說明以外),轉(zhuǎn)載請(qǐng)注明出處.
    英雄,別走啊,幫哥評(píng)論下:  

    精彩推薦 好文要頂 水平一般 看不懂 還需努力

    評(píng)論

    # re: JAVA 不同區(qū)域服務(wù)器引起的亂碼解決。  回復(fù)  更多評(píng)論   

    2009-10-26 11:40 by 淘寶網(wǎng)首頁(yè)
    是采用了默認(rèn)的字符集,但這里的默認(rèn)字符集確實(shí)Cp1252,因字符集不一致,所以就會(huì)亂碼

    # re: JAVA 不同區(qū)域服務(wù)器引起的亂碼解決。  回復(fù)  更多評(píng)論   

    2009-10-29 09:54 by admin
    一個(gè)tomcat上部署一個(gè)項(xiàng)目還好,如果多個(gè)項(xiàng)目,一個(gè)是法語(yǔ)的,一個(gè)中文的,如何解決

    # re: JAVA 不同區(qū)域服務(wù)器引起的亂碼解決。[未登錄]  回復(fù)  更多評(píng)論   

    2009-10-29 10:17 by lazy
    不知道事先采用utf8會(huì)不會(huì)避免這個(gè)問題

    # re: JAVA 不同區(qū)域服務(wù)器引起的亂碼解決。  回復(fù)  更多評(píng)論   

    2009-10-30 23:27 by BearRui(AK-47)
    @admin

    這種情況只能試試這個(gè)方法:

    在項(xiàng)目中建1個(gè)listener,在應(yīng)用啟動(dòng)的時(shí)候,設(shè)置一個(gè)下面的代碼:
    設(shè)置

    System.setProperty("file.encoding", "你想要的編碼");

    這個(gè)就可以不同的項(xiàng)目設(shè)置不同的file.encoding了。

    # re: JAVA 不同區(qū)域服務(wù)器引起的亂碼解決。  回復(fù)  更多評(píng)論   

    2009-10-30 23:27 by BearRui(AK-47)
    @lazy
    如果你的服務(wù)器本來就是UTF-8的話就可以。
    主站蜘蛛池模板: 国产福利免费视频| 免费一级毛suv好看的国产网站| 中文字幕在线视频免费观看| 国产大片免费观看中文字幕| 日本在线看片免费人成视频1000| 亚洲综合激情另类专区| 亚洲成熟xxxxx电影| APP在线免费观看视频| 三上悠亚亚洲一区高清| 美女无遮挡拍拍拍免费视频 | 97精品免费视频| 久久精品国产亚洲AV高清热| 5555在线播放免费播放| 亚洲最大视频网站| 免费观看黄网站在线播放| 亚洲熟妇AV日韩熟妇在线| 日本高清免费aaaaa大片视频| 亚洲AV无码片一区二区三区| 亚洲国产成人久久精品99| 一区二区免费电影| 久久亚洲AV午夜福利精品一区| 国产成人免费视频| 亚洲免费在线视频播放| 成年在线网站免费观看无广告| 亚洲大尺度无码无码专线一区| 亚洲Av无码乱码在线观看性色 | 亚洲日韩欧洲乱码AV夜夜摸| 亚洲中文无码卡通动漫野外| 日本成人在线免费观看| 国产99久久久久久免费看| 亚洲高清视频在线观看| 67194成是人免费无码| 免费播放国产性色生活片| 无码欧精品亚洲日韩一区| 全免费a级毛片免费看不卡 | 国产高潮流白浆喷水免费A片 | 久久亚洲高清观看| 午夜一区二区免费视频| 久久九九免费高清视频| 亚洲毛片基地日韩毛片基地| 国产免费AV片无码永久免费|