Java는 ByteArrayOutputStream을 사용하고 기본 인코딩을 사용합니다. 어떻게 해결합니까?

목차

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클래스 생성자에 전달했습니다.

문자 집합을 명시적으로 지정하면 기본 플랫폼 문자 집합에 의존하지 않고 다양한 플랫폼에서 일관성과 이식성을 보장할 수 있습니다.

도움이 되었기를 바랍니다! 추가 문의사항이 있으시면 언제든지 문의해 주세요.


Guess you like

Origin blog.csdn.net/python113/article/details/132426342