import java.io.InputStream;\r
import java.net.URL;\r
import java.net.URLConnection;\r
+import java.nio.charset.Charset;\r
import jp.sourceforge.jindolf.parser.ContentBuilder;\r
import jp.sourceforge.jindolf.parser.ContentBuilderSJ;\r
+import jp.sourceforge.jindolf.parser.ContentBuilderUCS2;\r
import jp.sourceforge.jindolf.parser.DecodeException;\r
import jp.sourceforge.jindolf.parser.DecodedContent;\r
import jp.sourceforge.jindolf.parser.HtmlParseException;\r
*/\r
public final class Builder{\r
\r
- /**\r
- * 入力ストリームをShift_JISでデコードする。\r
- * @param istream 入力\r
- * @return デコード結果\r
- * @throws IOException 入力エラー\r
- * @throws DecodeException デコードエラー\r
- */\r
- public static DecodedContent contentFromStream(InputStream istream)\r
+ private static int BUF_SZ = 100 * 1024;\r
+\r
+ public static DecodedContent contentFromStream(Charset charset,\r
+ InputStream istream)\r
throws IOException, DecodeException{\r
- StreamDecoder decoder = new SjisDecoder();\r
- ContentBuilder builder = new ContentBuilderSJ();\r
+ StreamDecoder decoder;\r
+ ContentBuilder builder;\r
+\r
+ if(charset.name().equalsIgnoreCase("Shift_JIS")){\r
+ decoder = new SjisDecoder();\r
+ builder = new ContentBuilderSJ(BUF_SZ);\r
+ }else if(charset.name().equalsIgnoreCase("UTF-8")){\r
+ decoder = new StreamDecoder(charset.newDecoder());\r
+ builder = new ContentBuilderUCS2(BUF_SZ);\r
+ }else{\r
+ assert false;\r
+ return null;\r
+ }\r
+\r
decoder.setDecodeHandler(builder);\r
\r
decoder.decode(istream);\r
\r
handler.initVillageData(villageData);\r
\r
+ Charset charset = villageData.getLandDef().getEncoding();\r
+\r
for(PeriodResource resource : villageData.getPeriodResourceList()){\r
handler.initPeriodResource(resource);\r
URL url;\r
long downTimeMs = conn.getDate();\r
resource.setDownTimeMs(downTimeMs);\r
}\r
- DecodedContent content = contentFromStream(istream);\r
+ DecodedContent content = contentFromStream(charset, istream);\r
istream.close();\r
parser.parseAutomatic(content);\r
}\r
import java.io.IOException;\r
import java.io.InputStream;\r
import java.net.URL;\r
+import java.nio.charset.Charset;\r
import java.util.LinkedList;\r
import java.util.List;\r
import jp.sourceforge.jindolf.corelib.LandDef;\r
IOException {\r
URL url = getPeriodListURL(landDef, vid);\r
\r
+ Charset charset = landDef.getEncoding();\r
InputStream istream = url.openStream();\r
- DecodedContent content = Builder.contentFromStream(istream);\r
+ DecodedContent content = Builder.contentFromStream(charset, istream);\r
istream.close();\r
\r
HtmlParser parser = new HtmlParser();\r