목차
1개 구현
public static String getExceptionInfo(Exception e) {
Charset charset = StandardCharsets.UTF_8; // 使用 Charset 类表示字符集
ByteArrayOutputStream baos = new ByteArrayOutputStream();
e.printStackTrace(new PrintStream(baos));
byte[] bytes = baos.toByteArray();
String result = new String(bytes, charset);
return result;
}
如果您在使用 `ByteArrayOutputStream` 时遇到了类似的问题,可以使用 `getBytes()` 方法的重载版本来明确指定字符集。
以下是一个示例:
```java
String charsetName = "UTF-8"; // 指定字符集名称,例如 UTF-8
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(data); // 假设 data 是要写入 ByteArrayOutputStream 的数据
byte[] bytes = baos.toByteArray();
String result = new String(bytes, charsetName);
baos.close();
String
위의 예에서는 클래스의 생성자를 사용하여 바이트 배열을 다시 문자열로 변환하고 문자 집합 이름을 "UTF-8"
.
마찬가지로 Charset
클래스를 사용하여 문자 집합을 나타내고 이를 String
클래스 생성자에 전달할 수 있습니다. 해당 예는 다음과 같습니다.
Charset charset = StandardCharsets.UTF_8; // 使用 Charset 类表示字符集
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(data); // 假设 data 是要写入 ByteArrayOutputStream 的数据
byte[] bytes = baos.toByteArray();
String result = new String(bytes, charset);
baos.close();
위의 예에서는 StandardCharsets.UTF_8
표현 문자 집합을 사용하여 이를 String
클래스 생성자에 전달했습니다.
문자 집합을 명시적으로 지정하면 기본 플랫폼 문자 집합에 의존하지 않고 다양한 플랫폼에서 일관성과 이식성을 보장할 수 있습니다.
도움이 되었기를 바랍니다! 추가 문의사항이 있으시면 언제든지 문의해 주세요.