奇怪的Quercus中文支援問題...

 Fri, 19 Jun 2009 12:56:13 +0800

之前用Quercus嘗試將CodeIgniter放到Google App Engines上執行,仿照Google提供的留言板例子,把程式放到CodeIgniter上跑。但是後來發現,在留言板上輸入中文會出現問題。

我的資料是放在一個java bean裡面(拿google的範例,所以叫做Greeting),資料存取透過jdo,存入時使用servlet,取出則用php。結果存入中文資料沒問題,取出中文資料就...一堆亂碼。

比較一下取出的資料,發現似乎字串長度是對的,但是編碼不對,每個中文字元長度似乎都被裁成一個位元組,而不是UTF-8的三個位元組。在java bean裡面動了一下手腳,把getter回傳的資料型態改成byte array,然後用getBytes("UTF-8")回傳,結果就是正確的了。(另外一個方法是用&#number;這樣的格式來處理每個字元)

看起來Quercus處理java與php資料型別轉換的方法(unmarshal)似乎怪怪的...要不然就是他內建的Env.createString()方法有點問題...另外,如果不使用GoogleQuercusServlet也會有一些問題,我把script_encoding改成iso-8859-1就正常顯示php程式中的中文???但是我用binary editor確認過,檔案編碼是UTF-8耶???真奇怪。我還特別修改unicode.semantics、unicode.script_encoding、unicode.runtime_encoding、unicode.output_encoding等選項耶,但是沒啥用處。

Quercus的功能感覺還不夠穩定...