2013年09月11日(水) [長年日記]
■ [java] UTF-8はStandardCharsets.UTF_8で指定できる
JavaのプログラムでUTF-8を指定したいときに、
java.nio.charset.Charset.forName("UTF-8")
の代わりに
java.nio.charset.StandardCharsets.UTF_8
と書けることを知ったのでメモ。StandardCharsetsクラスはJava 7で追加されたもののようだ。Pathクラスのjavadocを見ていて気付いた。
■ [java] java.util.Properties#store() はコメントのマルチバイト文字をエスケープする
Properties#store()はWriterに正しいCharsetを指定しておけばProperteisに設定した日本語をそのまま出力できるけど、store()に与えるcommentsについては日本語を \u 形式でエスケープして出力してしまう、ということをメモ(Java 1.7.0_25で確認)。なんでこうしてるんだ…
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Properties;
public class PropertiesWriter {
public static void main(String[] args) throws IOException {
Properties props = new Properties();
props.setProperty("キー", "値");
props.setProperty("パス", "c:\\テスト です");
try (BufferedWriter writer = Files.newBufferedWriter(
Paths.get("test.txt"), StandardCharsets.UTF_8)) {
props.store(writer, "コメント");
}
}
}
#\u30B3\u30E1\u30F3\u30C8 #Wed Sep 11 17:27:48 JST 2013 パス=c\:\\テスト です キー=値
[ツッコミを入れる]