Java で、ギリシャ記号などの複雑なテキストを含む HTML ファイルを解析しようとしています。
テキストに左向きの引用符が含まれている場合、既知の問題が発生します。のようなテキスト
mutations to particular “hotspot” regions
になる
mutations to particular “hotspot�? regions
簡単なテキストコピー方法を書くことで問題を切り分けました:
public static int CopyFile()
{
try
{
StringBuffer sb = null;
String NullSpace = System.getProperty("line.separator");
Writer output = new BufferedWriter(new FileWriter(outputFile));
String line;
BufferedReader input = new BufferedReader(new FileReader(myFile));
while((line = input.readLine())!=null)
{
sb = new StringBuffer();
//Parsing would happen
sb.append(line);
output.write(sb.toString()+NullSpace);
}
return 0;
}
catch (Exception e)
{
return 1;
}
}
この問題を修正する方法について、誰かアドバイスをいただけますか?
★私の解決策
InputStream in = new FileInputStream(myFile);
Reader reader = new InputStreamReader(in,"utf-8");
Reader buffer = new BufferedReader(reader);
Writer output = new BufferedWriter(new FileWriter(outputFile));
int r;
while ((r = reader.read()) != -1)
{
if (r<126)
{
output.write(r);
}
else
{
output.write("&#"+Integer.toString(r)+";");
}
}
output.flush();