14. CORBA
В стандарте CORBA предусмотрен тип, соответствующий Java-овскому типу String.
Это тип wstring.
Всё бы хорошо, но некоторые CORBA-сервера не поддерживают его в полной мере.
Типичные исключения, возникающие при спотыкании на русских буквах: org.omg.CORBA.MARSHAL: minor code 5 completed No или org.omg.CORBA.DATA_CONVERSION.
Лучше всего, конечно, заменить CORBA-сервер.
К сожалению у меня нет статистики, поэтому я не могу сказать, с какими проблем не будет.
Если сменить систему не представляется возможным, можно вместо типа wstring использовать тип string в паре с нашим любимым преобразованием:
// Серверная часть
a=new Answer(new String(src.getBytes("Cp1251"),"ISO-8859-1"));
...
// Клиентская часть
Answer answer=serverRef.getAnswer();
res=new String(answer.msg.getBytes("ISO-8859-1"),"Cp1251");
Тип wstring при этом лучше не использовать, потому как тем самым Вы кривость сервера будете компенсировать кривостью своих компонентов, а это практически всегда чревато разнообразными проблемами в будущем.
Вместо Cp1251 можно использовать любую кодировку русских букв, по желанию.
Это будет кодировка, в которой будут передаваться строки в компоненты на других языках.
Также, аналогичный код может потребоваться, если необходимо организовать связь с готовыми не-Java компонентами, которые уже использовали тип string.
Честно говоря, не лежит у меня душа к таким решениям, ну да что поделаешь, иногда оно единственное.