[JAVA] Évitez l'exception UnsupportedEncodingException avec Charset.forName

Un exemple d'exception 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) {
		//Ça ne peut pas arriver, mais tu dois écrire
	}
}

Vous pouvez utiliser String.getBytes (String charsetName) ou new String (byte [] bytes, String charsetName) lors de la conversion d'une chaîne ⇔ tableau d'octets en Java, mais charsetName n'est pas valide. Dans ce cas, l'exception vérifiée ʻUnsupportedEncodingException` se produit. Puisqu'il s'agit d'une exception vérifiée, «try-catch» et «throws» sont obligatoires, mais à moins que le code de caractère ne soit modifié dynamiquement, c'est une exception qui peut difficilement se produire, la description devient donc redondante.

Utilisez 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"));
}

L'utilisation du type Charset pour spécifier le code de caractère éliminera ʻUnsupportedEncodingException. UTF-8 est fourni comme constante de la classe java.nio.charset.StandardCharsets, mais comme il n'y a pas de SJIS, utilisez Charset.forName (String charsetName). Bien sûr, si charsetName` n'est pas valide, une exception se produira, mais toutes les exceptions dans ce cas sont des exceptions non cochées, donc le traitement de traitement n'est pas nécessaire.

Recommended Posts

Évitez l'exception UnsupportedEncodingException avec Charset.forName