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

Java 專案 GBK 轉 UTF-8 完整遷移指南:腳本、配置與常見坑點

     編輯:Java 相關知識

一鍵轉碼 Shell 腳本

#!/bin/bash
FILE_SUFFIX="java xml html vm js"
for x in $FILE_SUFFIX; do
    file_names=$(find . -name "*.$x" | xargs file -I | grep -v utf-8 | awk -F " |:" '{print $1}')
    for file_name in $file_names; do
        iconv -f cp936 -t UTF-8 "$file_name" >"$file_name.new" && mv -f "$file_name.new" "$file_name"
    done
    echo "$x ok"
done

# XML 頭聲明與 pom.xml 編碼屬性同步修正
find . -name "*.xml" | xargs sed -i 's/GBK/UTF-8/g; s/GB2312/UTF-8/g'
find . -name "pom.xml" | xargs sed -i 's/GBK/UTF-8/g; s/GB2312/UTF-8/g'
# Velocity/Struts/JS 參考路徑同步調整...

遷移後必做 8 項檢查

  1. 本地環境改 UTF-8:IDE、資料庫連線、建置工具皆設為 UTF-8
  2. 手動修復殘留亂碼:腳本無法覆蓋所有情況(如註解、字串常量)
  3. 中文 JS 引用加 charset:<script src="..." charset="GBK">(若該 JS 仍為 GBK)
  4. 打包編譯編碼設 UTF-8:Maven <properties><project.build.sourceEncoding>UTF-8</...>
  5. XML 聲明改 UTF-8:<?xml version="1.0" encoding="UTF-8"?>
  6. web.xml 配置 CharacterEncodingFilter(Spring 專案)
  7. 程式碼硬編碼 GBK 全域搜尋替換:getBytes("GBK") → getBytes("UTF-8")
  8. jdurl 等元件配置 charsetName=utf-8

Tomcat 關鍵設定:GET 請求中文亂碼根治

request.setCharacterEncoding("UTF-8") 僅對 POST 有效。GET 請求需修改 server.xml 的 Connector:

<Connector port="8080" protocol="HTTP/1.1"
           URIEncoding="UTF-8"
           connectionTimeout="20000"
           redirectPort="8443" />

遷移核心原則

「檔案編碼、傳輸編碼、解析編碼、儲存編碼」四位一體統一為 UTF-8。腳本解決 80% 批量轉換,剩餘 20% 需人工掃描驗證。

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