> Java > java지도 시간 > 본문

Java 오류: Java11 UTF-8 속성 파일 오류, 처리 및 방지 방법

WBOY
풀어 주다: 2023-06-25 09:26:27
원래의
1642명이 탐색했습니다.

Java는 웹 애플리케이션, 모바일 애플리케이션, 데스크톱 애플리케이션 및 기타 분야의 개발에 널리 사용되는 크로스 플랫폼 프로그래밍 언어입니다. Java 개발자가 코드를 작성할 때 구성 정보, 국제화된 문자열 및 기타 데이터를 저장하기 위해 속성 파일을 사용해야 하는 경우가 많습니다. 그러나 Java 11을 사용하여 개발된 애플리케이션에서는 UTF-8 속성 파일 오류가 발생할 수 있습니다. 이 문서에서는 Java11 UTF-8 속성 파일 오류를 처리하고 방지하는 방법을 설명합니다.

1. UTF-8 속성 파일 오류의 증상

Java11에서 UTF-8 인코딩을 사용하여 속성 파일을 저장하고 속성 파일에 중국어, 일본어 및 기타 비ASCII 문자가 포함되어 있는 경우 다음과 같은 문제가 발생할 수 있습니다. 예외:

java.nio.charset.MalformedInputException: Input length = 1
at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:274)
at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.base/java.io.InputStreamReader.read(InputStreamReader.java:185)
at java.base/java.io.BufferedReader.fill(BufferedReader.java:161)
at java.base/java.io.BufferedReader.readLine(BufferedReader.java:326)
at java.base/java.io.BufferedReader.readLine(BufferedReader.java:392)
로그인 후 복사

이 예외 메시지로는 문제의 근본 원인을 파악하기 어렵지만 분석을 통해 다음과 같은 결론을 내릴 수 있습니다.

  • 속성 파일을 읽을 때 Java11은 기본적으로 UTF-8 인코딩을 사용합니다.
  • 속성 파일을 읽는 과정에서 Java는 UTF-8 인코딩 규칙에 따라 바이트 단위로 읽습니다.
  • ASCII가 아닌 문자가 포함된 바이트 시퀀스를 읽으면 Java는 이를 유니코드 문자로 변환하려고 시도합니다.
  • 읽은 바이트 시퀀스를 UTF-8 인코딩 규칙에 따라 유니코드 문자로 디코딩할 수 없는 경우 MalformedInputException 예외가 발생합니다.

2.UTF-8 속성 파일 오류를 방지하는 방법

  1. 속성 파일 인코딩 수정

UTF-8 인코딩을 사용하여 속성 파일을 저장할 때 위 예외가 발생하는 경우, 속성 파일을 ISO-8859-1 또는 GB2312 및 기타 인코딩 형식으로 변환합니다. 이 두 가지 인코딩 형식은 유니코드 문자를 지원하지 않으므로 MalformedInputException이 발생하지 않습니다. 그러나 인코딩 형식을 수정하면 ASCII가 아닌 문자가 손실되거나 왜곡될 수 있다는 점에 유의해야 합니다.

  1. 속성 파일을 읽는 코드를 수정하세요

속성 파일을 읽는 데 올바른 문자 집합을 사용하도록 속성 파일을 읽는 코드를 수정하세요. Java11에서는 Properties 클래스를 사용하여 속성 파일을 읽을 때 ISO-8859-1 인코딩이 기본적으로 사용되므로 중국어와 같은 ASCII가 아닌 문자를 읽을 때 문자가 깨져서 나타날 수 있습니다. 다음 코드를 사용하여 UTF-8 형식의 속성 파일을 읽을 수 있습니다.

InputStream inputStream = this.getClass().getResourceAsStream("/test.properties");
Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
Properties properties = new Properties();
properties.load(reader);
로그인 후 복사

이 방법은 속성 파일의 인코딩 형식을 UTF-8로 설정하여 중국어와 같은 ASCII가 아닌 문자가 포함된 속성 파일을 읽을 수 있도록 합니다. 바르게.

3. UTF-8 속성 파일 오류 처리 방법

UTF-8 속성 파일 오류가 발생한 경우 다음 단계를 통해 해결할 수 있습니다.

  1. 속성 파일에 ASCII가 아닌 문자가 포함되어 있는지 확인하세요.

임의의 텍스트 편집기를 사용하여 속성 파일을 열고 파일 내용에 중국어, 일본어, 한국어 및 기타 비ASCII 문자가 포함되어 있는지 확인하세요. 속성 파일에 이러한 문자가 포함되어 있지 않으면 코드의 다른 문제를 확인해야 합니다.

  1. 속성 파일의 인코딩 형식을 확인하세요

텍스트 편집기를 사용하여 속성 파일을 열고 파일의 인코딩 형식을 확인하세요. UTF-8 인코딩 형식이고 파일에 ASCII가 아닌 문자가 포함되어 있으면 MalformedInputException이 발생할 수 있습니다.

  1. 속성 파일 인코딩 형식을 수정하거나 속성 파일의 코드를 읽으세요

특정 상황에 따라 속성 파일 인코딩 형식을 수정하거나 속성 파일의 코드를 읽어서 MalformedInputException을 피하거나 해결할 수 있습니다. 예외.

즉, Java11에서 UTF-8 인코딩 형식의 속성 파일을 사용할 때 문자 집합 인코딩 문제에 특별한 주의가 필요합니다. 인코딩 형식과 속성 파일을 읽는 코드를 올바르게 설정하면 UTF-8 속성 파일 오류 문제를 효과적으로 피할 수 있습니다.

위 내용은 Java 오류: Java11 UTF-8 속성 파일 오류, 처리 및 방지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿