首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

修正 IntelliJ IDEA CVS 外掛編碼問題,實現多工具互通

     編輯:Java 相關知識

問題現象

IntelliJ IDEA 的 CVS 整合功能強大,但中文編碼處理存在缺陷:

  • UTF-8 模式:Commit Log 以 UTF-8 編碼送至伺服器,CVSNT 等伺服器直接儲存,導致 WinCVS、TortoiseCVS 等工具無法正確解碼;反之,其他工具提交的中文 Log 在 IDEA 的 Show History 中顯示亂碼。且源碼中的中文仍以 GB 編碼儲存,同一個 xxxx.java,v 檔案混雙編碼。
  • ASCII 模式:Annotate 功能正常,但無法提交中文 Log(編碼錯誤),Show History 顯示外部提交的中文 Log 為亂碼。

根因分析

核心問題在於 org.netbeans.lib.cvsclient.io 套件下的 AsciiOutputStreamWriter 與 AsciiInputStreamReader 類別。IDEA Irida 版本的 cvsIntegration.jar 未經混淆,可直接反編譯修改;4.5 版本經混淆,需自行反編譯對應類別(org.a.a.a.b.f、org.a.a.a.b.c)。

解決方案

  1. 下載補丁:CvsPatchForIrida.zip
  2. 開啟 %IDEA_HOME%\plugins\cvsIntegration\lib\cvsIntegration.jar
  3. 以補丁內的 class 檔覆蓋 org\netbeans\lib\cvsclient\io 下的同名檔案。
  4. 重要:CVS 設定中勿勾選 UTF-8 encoding。

效果驗證

  • 修正後,ASCII 模式下中文 Log 正常提交與顯示,Annotate 功能正常。
  • 舊有 UTF-8 提交的中文 Log 會顯示亂碼,但若勾選 UTF-8 則與修改前行為一致,相容性無虞。

風險提示

修改的 AsciiInputStreamReader 引入靜態變量以提升效能,理論上可能存在執行緒安全隱憂,但 IDEA 操作 CVS 時視窗為模態,實際風險極低。使用者自行評估。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved