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\:\\テスト です キー=値