[Jetspeed-japan-dev] Re: [jetspeed] 日本語入力について

Back to archive index

Mamoru WATANABE mamor****@hotma*****
2003年 1月 6日 (月) 15:33:54 JST


渡辺です。
明けましておめでとうございます。

> media.xreg のエンコーディングを利用できるように修正して,
> 渡辺さんの UTF8ParameterParser.java の情報を元に,
> DefaultJetspeedParameterParser.java を作成しました.
> これにより,表示するエンコーディングが media.xreg >
> content.defaultencoding > デフォルト値の順に利用されると思います.
> JetspeedTemplatePage の変更は,cm.getPreferredType().getCharSet() を
> 利用しようと思ったのですが, null を返してくるので,使うのをやめました.
> getPreferredType() か getCharSet() を修正した方が良いような気も
> していますが,とりあえず,JetspeedTemplatePage で対応しています.
> 以上のことに関して,何か問題がありそうでしたら,ご指摘ください.
> よろしくおねがいします.

私が動かした範囲では問題がないことを確認しました(日本語のユーザ名を除
く)。ただ若干気になる点があるので、それを書きます。

まずはmedia.xregを利用するという点です。
オリジナルのJetspeedではmedia.xregの<character-set>は全く利用されてい
ません。ここの値を変えてもHTTPヘッダのContent-Typeには影響しません。
Content-Typeを変更するにはJR.pのcontent.defaultencodingの値を変更する
しかないようです。このmedia.xregの<character-set>の位置付けがイマイチ
不明であるという現状で、これを使って良いのかが引っ掛かります。

また以前のメールにも書きましたが、
http://www.mail-archive.com/jetspeed-dev%40jakarta.apache.org/msg05176.html
に書いてあるように、近い将来<meta>タグにcharsetを指定した場合には、そ
のcharsetを使うようにしようとしていることを考えると、media.xregの
<character-set>やJR.pのcontent.defaultencodingの値を利用する方法では、
それぞれ指定できる値が一つだけなので、上記<meta>タグへの対応が不可能に
なってしまうのではないかと思われます。

ところで、JetspeedのProfiler Fallback optionsを使えば各国語対応させる
ことができますが、これはWebブラウザの言語設定によって表示するページを
言語・国別に分けているだけであり、それらページを記述している文字コード
をmedia.xregの<character-set>やJR.pのcontent.defaultencodingの値のよう
に単一のcharacter-setで扱うには現在のところUTF-8しかないわけで、現在の
Jetspeedのやり方では、各国語対応させる場合はUTF-8を利用し、各国語対応
させない場合はその利用する言語・国用のcharacter-setを指定するしかない
ような気がします。

もしProfiler Fallback optionsを使って以下のようにJR.pを設定した場合で
も、JR.pのcontent.defaultencodingをShift_JISにしてしまえば、zh_TWのペー
ジは結果的に文字化けしちゃいます。

services.Profiler.fallback.language=true
services.Profiler.fallback.country=true
content.defaultencoding=Shift_JIS


そこでTR.pを見てみると、以下のような記述があります。

# This property specifies a file containing mappings between locales
# and the corresponding character encodings. The service itself
# contains a hardcoded set of most common mappings.
# The file should use the Java property file syntax, i.e.
# <lang_country_variant>=<charset>
#
#services.MimeTypeService.charsets=/WEB-INF/conf/charset.properties

このMimeTypeServiceを使うことでlocaleとcharsetのマッピングが可能になる
のではないかと思われます。ParameterParserの
setRequest(HttpServletRequest res)メソッドでHttpServletRequestにある
CGI変数のPATH_INFOを取得しており、このPATH_INFOには

/media-type/html/language/ja/country/null/user/turbine/page/default.psml

のように"language/ja","country/null"と言語と国が対になって格納されてい
ます。この情報を基にMimeTypeServiceのgetCharSetメソッドを使って
character-setを取得する(もしPATH_INFOにlanguage,countryが無ければTR.p
のlocale.default.languageとlocale.default.countryを使って取得する)よ
うにしたらいいのかなと思います。

因みにTurbineのorg.apache.turbine.services.mimetype.util.CharSetMapに
は以下のように39個が予めマッピングされています。

"ar","ISO-8859-6"
"be","ISO-8859-5"
"bg","ISO-8859-5"
"ca","ISO-8859-1"
"cs","ISO-8859-2"
"da","ISO-8859-1"
"de","ISO-8859-1"
"el","ISO-8859-7"
"en","ISO-8859-1"
"es","ISO-8859-1"
"et","ISO-8859-1"
"fi","ISO-8859-1"
"fr","ISO-8859-1"
"hr","ISO-8859-2"
"hu","ISO-8859-2"
"is","ISO-8859-1"
"it","ISO-8859-1"
"iw","ISO-8859-8"
"ja","Shift_JIS"
"ko","EUC-KR"
"lt","ISO-8859-2"
"lv","ISO-8859-2"
"mk","ISO-8859-5"
"nl","ISO-8859-1"
"no","ISO-8859-1"
"pl","ISO-8859-2"
"pt","ISO-8859-1"
"ro","ISO-8859-2"
"ru","ISO-8859-5"
"sh","ISO-8859-5"
"sk","ISO-8859-2"
"sl","ISO-8859-2"
"sq","ISO-8859-2"
"sr","ISO-8859-5"
"sv","ISO-8859-1"
"tr","ISO-8859-9"
"uk","ISO-8859-5"
"zh","GB2312"
"zh_TW","Big5"

実際に使えるかどうかは全く自信なしです。(^_^;

--
渡辺 衛
mamor****@hotma*****



Jetspeed-japan-dev メーリングリストの案内
Back to archive index