Русские буквы в Java аплете новостей :(
От: ZYV Россия  
Дата: 08.11.03 09:01
Оценка:
Здравствуйте,

Нашел тут Java аплет, который занимается тем, что читает новости из файла и выводит их ввиде бегущей строки в браузере (http://www.microticker.com/cgi-bin/download/d.pl?NewsMaker). Всем он хорош, за исключением того, что русские буквы выводятся кракозябрами, т.е. не совсем кракозябрами, а именно буквы в аксантами, типа áóéù и пр..

Читает новости он из файла с помощью datainputstream.readLine() в массив String, а рисует строки с помощью drawString() ...

Подскажите пожалуйста, как с этим можно бороться? Исходный код я, в принципе, могу здесь поместить.

Я находил какие-то статьи про русификацию Java на CITforum, но то ли они действительно не должны были помочь в данной ситуации, то ли я в них ничего не понял

Спасибо,
Z.
Re: Русские буквы в Java аплете новостей :(
От: mikkri Великобритания  
Дата: 08.11.03 16:46
Оценка:
Здравствуйте, ZYV, Вы писали:

ZYV>Здравствуйте,


ZYV>Нашел тут Java аплет, который занимается тем, что читает новости из файла и выводит их ввиде бегущей строки в браузере (http://www.microticker.com/cgi-bin/download/d.pl?NewsMaker). Всем он хорош, за исключением того, что русские буквы выводятся кракозябрами, т.е. не совсем кракозябрами, а именно буквы в аксантами, типа áóéù и пр..


ZYV>Читает новости он из файла с помощью datainputstream.readLine() в массив String, а рисует строки с помощью drawString() ...


ZYV>Подскажите пожалуйста, как с этим можно бороться? Исходный код я, в принципе, могу здесь поместить.


ZYV>Я находил какие-то статьи про русификацию Java на CITforum, но то ли они действительно не должны были помочь в данной ситуации, то ли я в них ничего не понял


При использовании методов работы со строками попробуй явно (вторым параметром) указывать русскую кодировку.
Саму Java русифицировать не нужно, так как внутри у нее все в юникоде.
... << RSDN@Home 1.1 beta 2 >>
Re[2]: Русские буквы появились - MS JVM ругается ;(
От: ZYV Россия  
Дата: 08.11.03 17:25
Оценка:
Здравствуйте, mikkri, Вы писали:

M>При использовании методов работы со строками попробуй явно (вторым параметром) указывать русскую кодировку.

M>Саму Java русифицировать не нужно, так как внутри у нее все в юникоде.

Спасибо большое за совет! После вашего ответа я нашел статью о локализации приложений на сайте SUN и заменил в исходниках апплета


URLConnection urlconnection = (new URL(getCodeBase(), file)).openConnection();
DataInputStream datainputstream = new DataInputStream(urlconnection.getInputStream());
String s;

while ((s = datainputstream.readLine()) != null) 
    Script.addElement(s.trim());


на


URLConnection urlconnection = (new URL(getCodeBase(), file)).openConnection();
BufferedReader  datainputstream = new BufferedReader( new InputStreamReader(urlconnection.getInputStream(), "Cp1251")); 
String s;

while((s = datainputstream.readLine()) != null) 
    Script.addElement(s.trim());


После этого русские буквы стали нормально обрабатываться !!!

Но возникла следующая проблема — под JRE 1.4 всё отлично идет, а вот под MS JVM — говорит "Class not found" и не работает Help!
Re[3]: Русские буквы появились - MS JVM ругается ;(
От: ZYV Россия  
Дата: 08.11.03 17:32
Оценка:
Я компилирую через DJ Java Decompiler — всё работает, но не под MS JVM.
При компиляции вручную javac.exe ... ругается:


Exception in thread "main" java.lang.NoClassDefFoundError: NewsMaker/java


и ничего не компилит.
Re[4]: Всё заработало!
От: ZYV Россия  
Дата: 08.11.03 17:53
Оценка:
Здравствуйте, ZYV, Вы писали:

ZYV>Я компилирую через DJ Java Decompiler — всё работает, но не под MS JVM.

ZYV>При компиляции вручную javac.exe ... ругается:
ZYV>и ничего не компилит.

УРА!!!

Куда делась ошибка, которую выдавал javac.exe я не знаю, но после переустановки MS JVM, JRE и JDK и перекомпиления аплета с параметрами:

javac.exe NewsMaker.java -target 1.1 -O -g:none

Всё заработало просто прекрасно

Спасбо всем, надеюсь найденным мною метод русификации приложений кому-нито поможет — сам я просто обыскался.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.