gbk轉utf-8

一、文件轉碼:使用腳本
 
gbk轉u8的腳本文件:
#!/bin/bash

FILE_SUFFIX="java xml html vm js"
# FILE_SUFFIX="vm"
file_names=""
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
		# echo $file_name
		iconv -f cp936 -t UTF-8 $file_name >$file_name".new" &&
	    mv -f "$file_name.new" "$file_name"
	done
	echo "$x ok"

done


find . -name "*.xml" | xargs sed -i "" "/<?xml/s/GBK/UTF-8/g"
find . -name "*.xml" | xargs sed -i "" "/<?xml/s/GB2312/UTF-8/g"

echo "xml head is ok!"

find . -name "pom.xml" | xargs sed -i "" "/<encoding>/s/GBK/UTF-8/g"
find . -name "pom.xml" | xargs sed -i "" "/<encoding>/s/GB2312/UTF-8/g"
find . -name "pom.xml" | xargs sed -i "" "/project.build.sourceEncoding/s/GBK/UTF-8/g"
find . -name "pom.xml" | xargs sed -i "" "/project.reporting.outputEncoding/s/GBK/UTF-8/g"
find . -name "pom.xml" | xargs sed -i "" "s/pop-vender-common-pageframe/pop-vender-common-pageframe-utf8/g"

echo "pom.xml is ok!"

find . -name "*.properties" | xargs sed -i "" "/input.encoding/s/GBK/UTF-8/g"
find . -name "*.properties" | xargs sed -i "" "/output.encoding/s/GBK/UTF-8/g"

echo "velocity properties is OK!"

find . -name "strut*.xml" | xargs sed -i "" '/struts.i18n.encoding/s/GBK/UTF-8/g'

echo "struts xml is ok!"

find . -name "*.vm" | xargs sed -i "" "s/\/common\/js\/jdmsg\/jd-msg.js/\/common\/js\/jdmsg\/jd-msg-utf8.js/g"
find . -name "*.vm" | xargs sed -i "" "/\/ui.datepicker.js/s/<script t/<script charset=\"GBK\" t/g"
find . -name "*.vm" | xargs sed -i "" "/\/jquery-calendar.js/s/<script t/<script charset=\"GBK\" t/g"
echo "vm is ok"

echo "finished"
# echo $file_names
二、文件轉碼後,本地環境改爲utf-8環境,可能會有部分亂碼文件,手動修復
三、含有中文js引用增長charset="gbk"
   如依賴:static.360buying.com、shop.jd.com
四、打包編譯編碼:替換成UTF-8
五、xml設置格式:之前可能爲gbk或gb2312,改爲utf-8
六、web.xml轉成UTF-8,請求攔截器字符編碼
   如使用spring配置
    <!--Character Encoding filter(字符集攔截轉換) -->
    <filter>
        <filter-name>charsetFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
七、代碼GBK使用
   主要是代碼裏面寫死GBK方式
   如string.getBytes("GBK")替換
 
八、jdurl配置編碼
增長<property name="charsetName" value="utf-8"/>
避稅分頁中含有中文亂碼
  如:jdurl的
編碼設置:
   <bean class="com.jd.pop.component.url.PopJdUrl">
         <property name="url" value="${pop-vender.login.address}"/>
         <property name="charsetName" value="utf-8"/>
   </bean>
 
大概是這8條
 
重點在後面:
這時你會發現,頁面的get請求請求服務器時仍是會出現亂碼,別慌,那是由於tomcat的編碼你尚未設置.
 
利用request.setCharacterEncoding("UTF-8");來設置Tomcat接收請求的編碼格式,只對POST方式提交的數據有效,對GET方式提交的數據無效!
要設置GET的編碼,能夠修改server.xml文件中,相應的端口的Connector的屬性:URIEncoding="UTF-8",這樣,GET方式提交的數據纔會被正確解碼。
  <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />
 
這樣就ok了!!!
相關文章
相關標籤/搜索