今天用做的東西要用Flex調(diào)用Webserice.沒(méi)想到出來(lái)的中文全是亂碼.
于是上網(wǎng)找資料.結(jié)果沒(méi)有找到flex+webservice的,其他的如flex+rometeobject等等的倒是有。但是很多最終也沒(méi)有說(shuō)出合適的解決辦法。很多人說(shuō)要把encoding="utf-8"改成GBK、GB2312等等,但是都不奏效,相反原來(lái)直接寫(xiě)在component上的中文卻成的亂碼。于是我覺(jué)得,問(wèn)題不是出在客戶(hù)端,應(yīng)該是服務(wù)端。于是我想起以前一些解決java中文亂碼的問(wèn)題。用經(jīng)典的轉(zhuǎn)換方法:
//這是一個(gè)將西歐字符轉(zhuǎn)換為gb2312字符的轉(zhuǎn)換方法
public static final String getGBString(String src) 
    
try {
        
return new String(src.getBytes("ISO-8859-1"), "gb2312");
    }
 catch (java.io.UnsupportedEncodingException e) {
        
return null;
    }

}

在webservice的java類(lèi)里面的所有中文返回以前都用這個(gè)函數(shù)轉(zhuǎn)換一下。
OK,問(wèn)題解決了。
但是并沒(méi)有完全解決,因?yàn)槟阍谒蟹祷刂形牡暮瘮?shù)里都要有這個(gè)方法。
我不知道Webservice的引擎有沒(méi)有類(lèi)是Servlet的Filter的東西。以前在解決網(wǎng)頁(yè)上中文亂碼的時(shí)候只要寫(xiě)一個(gè)Filter類(lèi)在轉(zhuǎn)換就行了。