我正在使用Java,Spring,并且希望防止消息属性文件中出现一些无效字符。
一些大学使用不同的操作系统,IDE和设置。由于我们的语言是葡萄牙语,而Windows默认编码是Windows-1252(或CP-1252),因此在编辑文件时,对于特殊(重音)字符(如á,ã,õ等)会有些困惑是很常见的,因为其中有些可以使用不同的编码并弄乱邮件属性文件,如下所示:
1002 = O pedido não foi encontrado
1003 = O pedido j� est� finalizado
1004 = A situa��o do hist�rico do pedido n�o � permitida
上面的文件最初是UTF-8文件,但是有人用Windows-1252编码编辑该文件,添加了两个新条目(1003和1004),并在读取文件时在重音符号位置创建了这个奇怪的问号。一个UTF-8文件。
因此,我正在考虑进行单元测试以检测文件上的此问题。我该如何进行单元测试?谢谢!
答案 0 :(得分:0)
我在@Mayamar和this answer的帮助下找到了答案。
@Test
public void verifyInvalidCharsOnMessages() throws IOException {
verifyInvalidChars("src/main/resources/i18n/messages.properties");
verifyInvalidChars("src/main/resources/i18n/messages_pt_BR.properties");
}
private void verifyInvalidChars(String file) throws IOException {
Properties p = new Properties();
FileInputStream input = new FileInputStream(new File(file));
p.load(new InputStreamReader(input, Charset.forName("UTF-8")));
Enumeration<String> enums = (Enumeration<String>) p.propertyNames();
while (enums.hasMoreElements()) {
String key = enums.nextElement();
String value = p.getProperty(key);
if (value.indexOf('\uFFFD') > 0) {
fail();
}
}
}