Печать турецких символов в графическом интерфейсе

У меня есть проект Java, который подключается к программе C#, которая печатает турецкие слова. Печать турецких символов в С# с помощью консоли не вызывает никаких проблем. Однако основная проблема заключается в том, что когда эта программа C# вызывается из Java, турецкие символы печатаются странно. Что я хотел бы сделать, так это распечатать вывод на консоли и перепечатать его с помощью графического интерфейса Java без каких-либо проблем с турецкими символами. Я очень ценю любую помощь. Спасибо заранее


person yihlamur    schedule 27.07.2010    source источник
comment
Я понимаю, что проблема связана с проблемами кодирования (преобразование между байтами и символами), но не могли бы вы немного уточнить, как ваша программа Java подключается к вашей программе C#? Я думаю, что Java отправляет строки, закодированные иначе, чем ожидалось.   -  person helios    schedule 27.07.2010
comment
Например: Java отправляет Wórd, закодированный в ISO-8859-1, и это 4 байта. Если C# декодирует его в UTF-8, он будет плохо декодировать байт, соответствующий ó).   -  person helios    schedule 27.07.2010
comment
Он связан через процесс. И вывод читается с помощью BufferedReader. BufferedReader stdInput = новый BufferedReader (новый InputStreamReader (Process.getInputStream()));   -  person yihlamur    schedule 27.07.2010


Ответы (1)


Проблема, вероятно, заключается в том, что приложение C# кодирует свои символьные данные в одной кодировке, а приложение Java декодирует данные в другой. Предполагая, что Windows, это, возможно, несоответствие ANSI/OEM.

Вам необходимо определить кодировку, которую испускает приложение C#. В приложении Java прочитайте каждый байт и проверьте его шестнадцатеричное значение. Проверьте, соответствуют ли байты Windows-1254, OEM-857 или что-то подобное, а затем соответствующим образом декодировать их с помощью читатель с соответствующим кодирование.

person McDowell    schedule 27.07.2010