[JAVA] Vermeiden Sie UnsupportedEncodingException mit Charset.forName

Ein Beispiel für eine UnsupportedEncodingException

public static void main(String[] args) {
	try {
		String str = "hello";
		byte[] utf8Bytes = str.getBytes("UTF-8");
		byte[] sjisBytes = str.getBytes("SJIS");
	} catch(UnsupportedEncodingException e) {
		//Es kann nicht passieren, aber du musst schreiben
	}
}

Sie können "String.getBytes (String charsetName)" oder "new String (Byte [] Bytes, String charsetName)" verwenden, wenn Sie ein String-Byte-Array in Java konvertieren, aber "charsetName" ist ungültig. In diesem Fall tritt die aktivierte Ausnahme "UnsupportedEncodingException" auf. Da es sich um eine aktivierte Ausnahme handelt, sind "try-catch" und "throw" erforderlich. Da es sich jedoch um eine Ausnahme handelt, die nur auftreten kann, wenn der Zeichencode dynamisch geändert wird, wird die Beschreibung redundant.

Verwenden Sie Charset.forName

public static void main(String[] args) {
	String str = "hello";
	byte[] utf8Bytes = str.getBytes(StandardCharsets.UTF_8);
	byte[] sjisBytes = str.getBytes(Charset.forName("SJIS"));
}

Wenn Sie den Zeichencode mit dem Typ "Zeichensatz" angeben, tritt die "UnsupportedEncodingException" nicht auf. UTF-8 wird als Konstante der Klasse "java.nio.charset.StandardCharsets" bereitgestellt. Da jedoch kein SJIS vorhanden ist, verwenden Sie "Charset.forName (String charsetName)". Wenn "charsetName" ungültig ist, tritt natürlich eine Ausnahme auf, aber alle Ausnahmen in diesem Fall sind nicht aktivierte Ausnahmen, sodass keine Verarbeitung erforderlich ist.

Recommended Posts

Vermeiden Sie UnsupportedEncodingException mit Charset.forName