web-dev-qa-db-fra.com

Dépendance trouvée sur l'encodage par défaut

J'obtiens au-dessous du bogue de FindBugs,

Dépendance trouvée sur l'encodage par défaut dans MyClass.print (String): String.getBytes ()

Méthode

protected void print (String str) {
{
private OutputStream outStream = null;
.....
outStream.write(str.getBytes());
.......
}

Veuillez me faire savoir quelle est l'erreur? comment pouvons-nous résoudre ce problème?

Merci d'avance

49
Srinivasan

Il existe différentes manières de coder une chaîne en octets - le jeu de caractères détermine ce codage. Si vous ne spécifiez pas de jeu de caractères, comme dans votre appel à str.getBytes(), il utilise la valeur par défaut du système.

FindBugs vous en avertit car vous devez penser au codage que vous souhaitez utiliser pour votre sortie. Si vous écrivez dans un fichier, à quoi s'attendent les lecteurs de ce fichier? Il est plus sûr si vous pouvez spécifier un encodage explicite pour le fichier afin de ne pas l'écrire dans un sens et de le lire dans un autre sens.

Pour spécifier un jeu de caractères explicite, utilisez str.getBytes(Charset.forName("UTF-8")), par exemple. UTF-8 est un bon choix car il est toujours pris en charge et peut encoder n'importe quel caractère.

Par exemple, .properties les fichiers sont toujours ISO 8859-1 (c'est-à-dire Latin-1). Cela est documenté, il n'y a donc aucune ambiguïté quant au codage à utiliser.

87
TimK