?

Log in

Previous Entry

Теперь уже в этой теме прошу писать всех, кто хотел бы что-то обсудить – статьи на сайте или же просто какие-то интересные/актуальные вопросы. По результатам сбора пожеланий опять-таки будут созданы темы для обсуждения. Или же статьи, что тоже реально.

Я был бы рад, если бы анонимные комментарии и вопросы были подписаны – проще отвечать.

Comments

(Anonymous)
May. 31st, 2010 09:27 pm (UTC)
Re: EJB3
Евгений,
сохранил строку, в которой используются русские и немецкие буквы, до отправки на сервер в файл: В файле отображаются все знаки правильно(и кириллица и умляуты) т.е. кодировка "UTF-8".
В NetBeans созданы два проекта: Bean и Клиент. У обоих в свойствах установлено Encoding "UTF-8".
Одновременно (при запуске проекта) правильно отображаются латиница и нем. умляуты. Вместо русских букв - ????? или "кракозяблы"
Ниже привожу код и результаты:
Bean:
package ejb;

@Stateless(mappedName="RuEJB")
public class RuBean implements RuRemote {

public byte[] getResult(String str, String charSet){
return str.getBytes(charSet);
}
}
Client:
package ruejbclient;

public class Main {
public static void main(String[] args){

String str_en = "EJB im Einsatz!!!";
String str_de = "DE: Überprüfung";
String str_ru = "RU: Шпора Überweisung";
String str_ru2 = new String(str_ru.getBytes("Cp1252"), "Cp1251");
//--------------------------------------
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("string.txt"), "UTF-8"));
writer.write(str_ru);
writer.flush();
writer.close();
//---------------------------------------
InitialContext ctx = new InitialContext();
RuRemote rb = (RuRemote) ctx.lookup("RuEJB");
//------------OUTPUT----------------------
System.out.println("Main() sagt_en: " + new String(rb.getResult(str_en, "Cp1252")));
System.out.println("Main() sagt_de: " + new String(rb.getResult(str_de, "Cp1252")));
System.out.println("Main() sagt_ru: " + new String(rb.getResult(str_ru, "Cp1251")));
System.out.println("Main() sagt_ru2: " + new String(rb.getResult(str_ru2, "Cp1251")));

}
Output
string.txt:
RU: Шпора Überweisung
//-----------------------------------------------
Consol:
run-tool:
Main() sagt_en: EJB im Einsatz!!!
Main() sagt_de: DE: Überprüfung
Main() sagt_ru: RU: <кракозяблы> ?berweisung
Main() sagt_ru2: RU: ????? Überweisung


skipy_ru
Jun. 1st, 2010 07:28 am (UTC)
Re: EJB3
Ну, как я и предполагал. У Вас с консолью проблемы. В секции OUTPUT вместо консоли первые три ответа сервера выведите в файл, так же, как выше. В кодировке UTF-8. И посмотрите, что и как, должно быть все нормально.

BTW, я не уверен, что Вы в консоль вообще сможете вывести одновременно русские и немецкие символы. Я недавно минут 15 потратил на запуск консоли Windows в Unicode. Как-то результата не добился, как была Cp866, так и осталась.

P.S. Создавать строку из байтов без указания кодировки - некошерно. Правильно так: new String(rb.getResult(str_de, "Cp1252"),"Cp1252")