跳轉到內容

WebObjects/Web 應用程式/開發/本地化和國際化

來自 Wikibooks,開放世界中的開放書籍

要為您的 WO 應用程式啟用 Unicode,請在您的應用程式建構函式中新增以下內容

 WOMessage.setDefaultEncoding("UTF8");

這將告訴所有 WOResponse 和 WORequest 使用 UTF8(Unicode)。

然後您只需要告訴瀏覽器。讓所有 .wo 頁面在 HTML 中包含此元標記

 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Jesse Barnum

[編輯 | 編輯原始碼]

很棒的小技巧 - 這裡有一個簡單的方法呼叫,您可以將其貼上到您的 Application 物件中,以自動實現上述結果

 private boolean enableUTFEncoding = false;
 
 public void enableUTFEncoding() {
   enableUTFEncoding = true;
   WOMessage.setDefaultEncoding(_NSUtilities.UTF8StringEncoding);
 }
 
 public WOResponse dispatchRequest(WORequest theRequest) {
   WOResponse result = super.dispatchRequest(theRequest);
   if( enableUTFEncoding && "text/html".equals(result.headerForKey("content-type")) ) {
     result.setHeader("text/html; charset=UTF-8; encoding=UTF-8", "content-type"); 
   }
   return result;
 }

Helmut Schottmüller

[編輯 | 編輯原始碼]

不幸的是,如果您想在同一個表單中使用檔案上傳欄位和 UTF-8 編碼,則並非那麼容易。新增檔案上傳元件意味著您必須將表單的 enctype 設定為“multipart/form-data”。要強制多部分表單使用 UTF-8 編碼,通常需要 enctype 為“multipart/form-data; charset=UTF-8”,但 WO 無法識別此類表單為多部分表單。當您在瀏覽器中開啟表單時,您將收到“java.lang.IllegalArgumentException: This form is missing a 'enctype=multipart/form-data' attribute. It is required for WOFileUpload to work.” 錯誤。

為了確保在多部分表單中也支援 UTF-8,您必須將以下程式碼新增到您的 Application 物件中

 public WORequest createRequest(String aMethod, String aURL, String anHTTPVersion, NSDictionary someHeaders, NSData aContent, NSDictionary someInfo) 
 {
   WORequest newRequest = super.createRequest(aMethod, aURL, anHTTPVersion, someHeaders, aContent, someInfo);
   newRequest.setDefaultFormValueEncoding(_NSUtilities.UTF8StringEncoding);
   return newRequest;
 }

為了使 WOFileUpload 元件正常工作,我還必須在應用程式中新增啟動引數 -WOUseLegacyMultipartParser true。此啟動引數強制解析所有表單值,第一次呼叫 WORequest.formValues 時。有關更多資訊,請參閱Apple 開發者文件。如果沒有 -WOUseLegacyMultipartParser true,我的應用程式使用 WOFileUpload 元件時會出現嚴重問題,因為繫結資料filePath在表單 POST 後已被清空。

有了 Jesse 的程式碼和此擴充套件,您將能夠在您的 WO 應用程式中正確處理 UTF-8 字元資料。

如果您在您的 UTF-8 應用程式中使用本地化字串,您也可以檢視 Project Wonder 的ERXLocalizer 類。

華夏公益教科書