读取带有波兰语字母的 ANSI 文件并在没有口音的情况下在控制台中显示
Read ANSI file with polish letters and show in console without Accents
我在 file.csv 中有这一行“ĆćĘ꣏źł”,它被编码(如 Notepad++ 所示)为 ANSI。我怎样才能像 CcEeLzzl 这样在控制台中正确显示这一行。
为了去除口音,我使用了来自 apache 的 StringUtils.stripAccents(myLine),但仍然得到“��Ee����”
FileReader fr = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader(fileName2));
while ((sCurrentLine = StringUtils.stripAccents(br.readLine())) != null) {
System.out.println(StringUtils.stripAccents(sCurrentLine));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
if (fr != null)
fr.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}```
I want in COnsole this "CcEeLzzl", not that "ĆćĘ꣏źł". Please help me.
您似乎想要应用从波兰语字母到 stripAccents
域之外的 ascii 的自定义映射。可能你必须自己定义它,例如如下所示(仅针对“Ł”和“ł”显示)。
剧透:不,你不必这样做。 windows 编码上的 ansi 是罪魁祸首。通过适当的解码 StringUtils.stripAccents
工作正常。看评论。但是如果你离开 stripAccents 的域...
public void Ll() {
Map<String, String> map = new HashMap<>();
map.put("Ł", "L");
map.put("ł", "l");
System.out.println(Arrays.stream("ŁałaŁała".split("(?!^)"))
.map(c -> {
String letter = map.get(c);
return letter == null ? c : letter;
})
.collect(Collectors.joining("")));
}
我在 file.csv 中有这一行“ĆćĘ꣏źł”,它被编码(如 Notepad++ 所示)为 ANSI。我怎样才能像 CcEeLzzl 这样在控制台中正确显示这一行。
为了去除口音,我使用了来自 apache 的 StringUtils.stripAccents(myLine),但仍然得到“��Ee����”
FileReader fr = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader(fileName2));
while ((sCurrentLine = StringUtils.stripAccents(br.readLine())) != null) {
System.out.println(StringUtils.stripAccents(sCurrentLine));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
if (fr != null)
fr.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}```
I want in COnsole this "CcEeLzzl", not that "ĆćĘ꣏źł". Please help me.
您似乎想要应用从波兰语字母到 stripAccents
域之外的 ascii 的自定义映射。可能你必须自己定义它,例如如下所示(仅针对“Ł”和“ł”显示)。
剧透:不,你不必这样做。 windows 编码上的 ansi 是罪魁祸首。通过适当的解码 StringUtils.stripAccents
工作正常。看评论。但是如果你离开 stripAccents 的域...
public void Ll() {
Map<String, String> map = new HashMap<>();
map.put("Ł", "L");
map.put("ł", "l");
System.out.println(Arrays.stream("ŁałaŁała".split("(?!^)"))
.map(c -> {
String letter = map.get(c);
return letter == null ? c : letter;
})
.collect(Collectors.joining("")));
}