今天用做的東西要用Flex調用Webserice.沒想到出來的中文全是亂碼.
于是上網找資料.結果沒有找到flex+webservice的,其他的如flex+rometeobject等等的倒是有。但是很多最終也沒有說出合適的解決辦法。很多人說要把encoding="utf-8"改成GBK、GB2312等等,但是都不奏效,相反原來直接寫在component上的中文卻成的亂碼。于是我覺得,問題不是出在客戶端,應該是服務端。于是我想起以前一些解決java中文亂碼的問題。用經典的轉換方法:
//這是一個將西歐字符轉換為gb2312字符的轉換方法

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類里面的所有中文返回以前都用這個函數轉換一下。
OK,問題解決了。
但是并沒有完全解決,因為你在所有返回中文的函數里都要有這個方法。
我不知道Webservice的引擎有沒有類是Servlet的Filter的東西。以前在解決網頁上中文亂碼的時候只要寫一個Filter類在轉換就行了。
于是上網找資料.結果沒有找到flex+webservice的,其他的如flex+rometeobject等等的倒是有。但是很多最終也沒有說出合適的解決辦法。很多人說要把encoding="utf-8"改成GBK、GB2312等等,但是都不奏效,相反原來直接寫在component上的中文卻成的亂碼。于是我覺得,問題不是出在客戶端,應該是服務端。于是我想起以前一些解決java中文亂碼的問題。用經典的轉換方法:














在webservice的java類里面的所有中文返回以前都用這個函數轉換一下。
OK,問題解決了。
但是并沒有完全解決,因為你在所有返回中文的函數里都要有這個方法。
我不知道Webservice的引擎有沒有類是Servlet的Filter的東西。以前在解決網頁上中文亂碼的時候只要寫一個Filter類在轉換就行了。
http://www.flashj.cn/wp/?p=70
ash讀取xml出現亂碼涉及到System.useCodepage這個靜態屬性屬性
官方描述:“A Boolean value that tells Flash Player which code page to use to interpret external text files.”默認為false。
倘若我們使用UTF8編碼的外部文本文件,都不用管它,使用非UTF8編碼文本文件且文本中出現中文字符的話,則需要設置其為true方能讓flash讀出字符不亂碼。
AS3中可先import flash.system.System;然后設置System.useCodePage=true;