- - PR -
velocityを使ってファイル生成時の文字化け
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-02-27 21:09
velocityを使ってファイル生成(htmlファイル)をしています。
プログラムソース、テンプレート(.vm)ファイル、生成するファイルすべてutf-8です。 ところが、生成されたhtmlファイルはsjisになってしまいます。 いろいろな情報を調べて下記のように設定しています。 <前略> VelocityEngine engine = new VelocityEngine(); prop.setProperty("input.encoding", "UTF-8"); prop.setProperty("output.encoding", "UTF-8"); prop.setProperty("default.contextType", "text/html; charset=UTF-8"); engine.init(prop); Template template = engine.getTemplate("Template.vm","utf-8"); <以下略> いろいろと調べて上記設定にしたのですが・・・ 何かお気づきの事があればご教授いただけますでしょうか。 ちなみに情報を入力するフォームはflexで作成しており、該当フォームの mxmlの冒頭に <?xml version="1.0" encoding="utf-8"?> と記述しています。 何か基本的な事が抜けているのかとも思うのですが、どうしても解決でき ないため、投稿させていただきました。 どうぞよろしくお願いいたします。 tori | ||||
|
投稿日時: 2009-02-27 21:48
肝心のtemplate.merge()に渡すときのWriterはどのように作成しているのでしょうか?
FileWriterで作成するとデフォルトの文字コードになるので、 OutputStreamから文字コードを指定してWriterにする必要があります。
| ||||
|
投稿日時: 2009-03-01 16:40
a-san さん
お返事ありがとうございます。 そうなのですね・・・そこは過去に使っていたものをそのまま使っていました。 デフォルトはsjisなのでしょうかね・・・sjisの時は問題なかったので・・・ FileOutputStream fos = new FileOutputStream(outputFilePath); OutputStreamWriter os = new OutputStreamWriter(fos); としていました(^^ゞ ご指摘の通り試してみますm(__)m tori |
1