11
votes

UTF-8 codé java string dans les propriétés

J'ai une seule chaîne codée UTF-8 qui est une chaîne de paires de clés + à la valeur requises pour être chargée dans un objet Propriétés. J'ai remarqué que j'avais des personnages brouillés avec ma mise en œuvre intentaire et après un peu de googling, j'ai trouvé cela Question qui indiquait ce que mon problème était - fondamentalement, les propriétés utilisent par défaut l'ISO-8859-1. Cette implémentation ressemblait à xxx

aucun codage spécifié, d'où mon problème. À ma question, je ne peux pas comprendre comment chaîner / créer un lecteur / INPUTStream à passer à Propriétés.load () que Utilise la propriété fournie et spécifie le codage. Je pense que cela est principalement dû à mon inexpérience dans les flux d'E / S et à la bibliothèque apparemment vaste des utilitaires IO dans le paquet Java.io.

Tout conseil apprécié.


0 commentaires

3 Réponses :


13
votes

Utilisez un lecteur code> lorsque vous travaillez avec des chaînes. introuvable code> s sont vraiment destinés aux données binaires.

public Properties load(String propertiesString) {
    Properties properties = new Properties();
    properties.load(new StringReader(propertiesString));
    return properties;
}


4 commentaires

Ce constructeur n'existe pas.


Merci, j'ai fait checkout stringreader , mais Je n'ai vu aucun constructeur de ce type.


Bravo Matt, vient d'essayer cette solution avec succès. N'utilisait pas de StringReader, car j'avais eu mes œuvres à la recherche de contrôle sur le codage. Merci beaucoup pour votre aide. UPVOTE + accepter pour vous mon ami.


De rien. Toutes mes excuses pour vous diriger initialement vers un constructeur inexistant.



1
votes

Essayez ceci:

ByteArrayInputStream bais = new ByteArrayInputStream(propertiesString.getBytes("UTF-8"));
properties.load(bais);


1 commentaires

Je devais utiliser ceci au lieu du stringreader afin de prendre en charge Android SDKS plus anciens que Android-9.



2
votes
System.out.println(getProperties().getProperty("key"))

0 commentaires