2009年7月21日 星期二

Helma NG 0.4 在 App Engine 上無法顯示中文

很不幸的。無法顯示中文。這迫使我必須瞭解原因。為了瞭解原因,我必須學很多本來不必學習的東西。

本來,我的計劃只要使用 Helma NG 和 javascript 就能搞定。現在,我必須探就 Helma NG 的底層,瞭解到底發生了什麼事,為何 java 可以正確顯示中文,而建立在 Java 之上的 Helma NG 卻不可以。

我先瞭解 rhino 及 app engine 的關係。以免被 Helma NG 的複雜性嚇到。以下這篇文章,給了我一個不錯的開始。

Javascript on Rhino on Java on App Engine

這時開始感到困難了。

我不會 Java。

又回到了年輕時什麼都不會的時候。

努力之後,我學會了:
  1. 使用 Eclipse 的 Project->Property 來增加一個 jar file。
  2. 在 src 中增加一個新的 .java 檔。
  3. 如何 embeds rhino
  4. 使用 FileInputStream 及 InputStreamReader 來讀取 .js 檔,以便設定 encoding。FileReader 雖然較容易用但無法設定 encoding 。
  5. ContentType 要加上 charset=UTF-8。
It works!! 我寫的小小的 Rhino Servlet 可以在 App Engine 上顯示中文了。

核對 Helma NG 的程式,其 file.js 及 MarkdownProcessor.java 都使用 FileReader。這應該就是 Helma NG 無法在 App Engine 顯示中文的原因。

沒有留言:

張貼留言