ちょっとまとめてみる(Shift-JISも同様)
1.ファイル読み込み
ファイルを読み込む際にreadlineが途中で終わってしまう場合一番簡単な解決法はcommons-ioを使う
Java標準のFileReaderはマルチバイト対応してないよう
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
…
LineIterator it = null;
try {
it = FileUtils.lineIterator(file, "UTF-8");
while (it.hasNext()) {
String line = it.nextLine();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
LineIterator.closeQuietly(it);
}
2.URLConnectionでUTF-8指定
InputStreamReaderでUTF-8を指定するURL url = new URL("your url");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
StringBuilder builder = new StringBuilder();
String str;
while (null != (str = reader .readLine())) {
builder.append(str).append("\r\n");
}
reader.close();
str = builder.toString();
3.XMLパーサでのUTF-8指定
parserにXMLInputSourceでUTF-8指定例では、URLConnectionからデータ取得
DOMParser parser = new DOMParser();
parser.setFeature("http://xml.org/sax/features/namespaces", false);
parser.setFeature("http://cyberneko.org/html/features/scanner/notify-builtin-refs", true);
BufferedReader reader = new BufferedReader(new InputStreamReader( url.openStream(), "UTF-8"));
XMLInputSource source = new XMLInputSource(null, "Element", null,
reader, "UTF-8");
parser.parse(source);
Document document = parser.getDocument();
4.MySQLで文字化ける
内部エンコーディング、入力、DB全部UTF-8で統一していても文字化けする場合
database urlにcharacterEncodingを指定する
jdbc:mysql://localhost/schema?useUnicode=true&characterEncoding=UTF8
jetty jndiではuseUnicode=trueが指定できないので
characterEncodingのみ指定
0 件のコメント:
コメントを投稿