Mam jeden String zakodowany w UTF-8, który jest łańcuchem par klucz + wartość, który jest wymagany do załadowania do obiektu Properties. Zauważyłem, że dostaję zniekształcone postacie za pomocą mojej wstępnej implementacji i po odrobinie wyszukiwania go znalazłem ten Question, który wskazywał na mój problem - zasadniczo, że Właściwości jest domyślnie przy użyciu ISO-8859-1. Ta implementacja wyglądała następująco:Kodowany Java UTF-8 String na Właściwości
public Properties load(String propertiesString) {
Properties properties = new Properties();
try {
properties.load(new ByteArrayInputStream(propertiesString.getBytes()));
} catch (IOException e) {
logger.error(ExceptionUtils.getFullStackTrace(e));
}
return properties;
}
Nie określono kodowania, stąd mój problem. Na moje pytanie nie mogę wymyślić, jak połączyć/utworzyć kombinację Reader
/InputStream
, aby przejść do Properties.load()
, która używa podanego propertiesString
i określa kodowanie. Myślę, że jest to głównie spowodowane brakiem doświadczenia w strumieniach I/O i pozornie ogromną biblioteką narzędzi IO w pakiecie java.io.
Wszelkie porady są mile widziane.
że konstruktor nie istnieje. – BalusC
Dzięki, zrobiłem checkout [StringReader] (http://docs.oracle.com/javase/6/docs/api/java/io/StringReader.html), ale nie widziałem takiego konstruktora. – markdsievers
Pozdrowienia Matt, właśnie wypróbowaliśmy to rozwiązanie. Nie użyłem początkowo StringReader, ponieważ miałem moje blindy szukające kontroli nad kodowaniem. Bardzo dziękuję za pomoc. Awansuj + zaakceptuj dla siebie mojego przyjaciela. – markdsievers