2013-02-26 18 views
5

Co się stanie, jeśli plik zostanie wygenerowany przy użyciu kodowania, które nie obsługuje środowiska JRE? Czy istnieje jeszcze możliwość rozszerzenia/dostosowania tego, co może obsłużyć moje środowisko JRE?Co, jeśli moje środowisko JRE nie obsługuje kodowania znaków?

To może być straszny/nieistotnych przykład (ja tylko szczotkowanie na zestawów znaków/kodowanie po raz pierwszy), ale wierzę Linux JRE nie obsługuje CP-1252 (A kodowanie Windows). Jeśli tak, to jak mogę uruchomić aplikację Java na komputerze z systemem Linux, aby odczytać plik zakodowany w CP-1252?

Nawet jeśli Linux JRE distro ma obsługuje CP-1252 (co czyni ten okropny przykład), wiem na pewno, że istnieją kodowania, które nie obsługuje. Jakiekolwiek są te kodowania, czy istnieje sposób na rozszerzenie standardu Charactset, a jeśli tak, to w jaki sposób?

+0

'CP-1252' jest zasadniczo taka sama jak 'ISO-8859-1' (i nie, nie sądzę, że można dodać nowe kodowania do środowiska JRE) –

+1

" Zestaw Java SE 6 dla wszystkich platform (środowisko operacyjne SolarisTM, Linux i Microsoft Windows) i środowisko Java " SE Runtime Environment 6 dla systemu Solaris i Linux obsługuje wszystkie kodowania pokazane na tej stronie. " (w tym Cp1252) http://docs.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html –

Odpowiedz

4

Biblioteka klas Java ma mechanizm dodawania nowego zestawu znaków; zobacz javadocs dla CharsetProvider.

Podstawową ideą jest napisanie klasy implementującej interfejs API CharsetProvider. Następnie w pliku JAR dodaj plik o nazwie "/META-INF/services/java.nio.charset.spi.CharsetProvider", który zawiera listę nazw zestawów znaków w zapisanym formacie.

(I przyszedł także po drugiej stronie niniejszego raportu błędów http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4619777 które mogą mieć wpływ, jeśli staramy się dodawać własne charsets w zaufanym apletu ...)


Znasz któregokolwiek "Biblioteki rozszerzeń modułów ładujących", które już to robią (i dostarczają wiele niestandardowych zestawów znaków)?

Jedyny przykład, jaki mogłem znaleźć to JCharset i dodaje tylko 8 dodatkowych zestawów znaków.

Jeśli (lub ktokolwiek inny) potrzebuje zestawu znaków, którego nie ma w zestawie, proponuję pobrać JCharset, zaimplementować nowy zestaw znaków, a następnie opublikować zmiany do autora jako poprawki.

+0

Dzięki @Stepen C (+1) - bardzo interesujące ... czy znasz dowolne "biblioteki rozszerzenia zestawu znaków", które już to robią (i dostarczają wiele nietypowych zestawów znaków)? Dzięki jeszcze raz! –

1

The documentation mówi:

Wsparcie dla nowych zestawów znaków mogą być dostępne poprzez interfejs zdefiniowany w klasie CharsetProvider w pakiecie java.nio.charset.spi.

Śledź link i przeczytać instrukcję ...

+0

Dzięki @JB Nizet - zobacz moją odpowiedź w odpowiedzi Stephena C. - Mam dla ciebie takie samo pytanie! Dzięki jeszcze raz! –

+0

Nie znam żadnego, nie. Ale JRE zawiera dużą listę zestawów znaków (patrz komentarz Alana Kruegera). –

+0

Jeszcze raz dziękuję - za to, co jest warte, znalazłem [JCharset] (http://www.freeutils.net/source/jcharset/) –

0

sunilkumar z vmoksha

Proszę sprawdzić plik .xml zawierajacego UTF-8

Powiązane problemy