Java BufferedReader 特殊字符有时无法识别
Java BufferedReader special char sometimes not identified
我实现了一个 BufferedReader 来为我的应用程序读取一个文本文件(来自 UI,Restbased 的 MultipartFormdata):
if (input == null || input.getParts() == null || input.getParts().isEmpty()) {
throw new IllegalArgumentException("Multipart request is empty");
}
try {
InputStream result;
if (input.getParts().size() == 1) {
InputPart filePart = input.getParts().iterator().next();
MultivaluedMap<String, String> header = filePart.getHeaders();
filename = ImportHelperService.getFileName(header);
result = filePart.getBody(InputStream.class, null);
} else {
result = input.getFormDataPart("file", InputStream.class, null);
}
if (result == null) {
throw new IllegalArgumentException("Can't find a valid 'file' part in the multipart request");
}
BufferedReader in = new BufferedReader(new InputStreamReader(result, StandardCharsets.UTF_8));
String temp ="";
StringBuilder sb = new StringBuilder();
while ((temp = in.readLine()) != null) {
if(!sb.toString().equals(""))
sb.append("\n");
sb.append(temp);
}
in.close();
fileString = sb.toString();
} catch (IOException e) {
throw new IllegalArgumentException("Error while reading multipart request", e);
}
在我的输入中有时会有一个特殊字符 µ ,但我的 BufferedReader 无法处理它。这个输入是一个带有 ? 的黑色方块。有人能帮我吗?
我试图将这个 µ 手动复制到我的文本文件中,然后识别出 µ。但是,如果我们的客户在文本文件中获取这个 µ,则 µ 就是 ?。我该如何处理?
您的 BufferedReader 是否与您的文件具有相同的字符集?例如,如果您的文件是用 UTF-8 编写的,则您的 BufferedReader 必须配置为 UTF-8 字符集。
我实现了一个 BufferedReader 来为我的应用程序读取一个文本文件(来自 UI,Restbased 的 MultipartFormdata):
if (input == null || input.getParts() == null || input.getParts().isEmpty()) {
throw new IllegalArgumentException("Multipart request is empty");
}
try {
InputStream result;
if (input.getParts().size() == 1) {
InputPart filePart = input.getParts().iterator().next();
MultivaluedMap<String, String> header = filePart.getHeaders();
filename = ImportHelperService.getFileName(header);
result = filePart.getBody(InputStream.class, null);
} else {
result = input.getFormDataPart("file", InputStream.class, null);
}
if (result == null) {
throw new IllegalArgumentException("Can't find a valid 'file' part in the multipart request");
}
BufferedReader in = new BufferedReader(new InputStreamReader(result, StandardCharsets.UTF_8));
String temp ="";
StringBuilder sb = new StringBuilder();
while ((temp = in.readLine()) != null) {
if(!sb.toString().equals(""))
sb.append("\n");
sb.append(temp);
}
in.close();
fileString = sb.toString();
} catch (IOException e) {
throw new IllegalArgumentException("Error while reading multipart request", e);
}
在我的输入中有时会有一个特殊字符 µ ,但我的 BufferedReader 无法处理它。这个输入是一个带有 ? 的黑色方块。有人能帮我吗? 我试图将这个 µ 手动复制到我的文本文件中,然后识别出 µ。但是,如果我们的客户在文本文件中获取这个 µ,则 µ 就是 ?。我该如何处理?
您的 BufferedReader 是否与您的文件具有相同的字符集?例如,如果您的文件是用 UTF-8 编写的,则您的 BufferedReader 必须配置为 UTF-8 字符集。