Я отправляю ивритские данные из программы RPG в программу Java, и некоторые данные поступают не так, как ожидалось. Программа RPG запускается на машине iSeries с CCSID 65535. Доступ к java осуществляется посредством удаленного вызова метода.
Большая часть иврита получена Java-программой в логическом порядке. Затем я обрабатываю его с помощью класса Bidi Java, чтобы получить его в визуальном порядке, поскольку я в конечном итоге пишу его в PDF. Почти все данные в порядке, за исключением нескольких строк, которые являются уравнениями.
Предположим, что капитал H - это иврит. Вот как должна выглядеть строка: 300 X 250 X 500 :HHHH
Я получаю строку следующим образом: HHHH: 500 250 X 300 X
500 не в том порядке, который я ожидал бы, и класс Bidi не справляется с этим должным образом. Есть несколько строк, таких как эти, и это единственные строки, с которыми не работает класс Bidi. Я бы предположил, что строка войдет как: HHHH: 300 X 250 X 500
, поскольку я считаю, что это был бы логический порядок. Кажется, он сохранил 500 в сегменте RTL, а затем перевернулся на LTR, когда он попал в X. Есть ли у кого-нибудь какие-либо идеи относительно того, почему это было бы?
Спасибо за помощь.
EDIT: Java фактически вызывается через JNI, а не RMI.Иврит данные из программы RPG для Java-программы неправильно упорядочены
ответ
Итак, я выяснил, что происходит здесь, и я отвечаю на свой вопрос, если кто-то еще сталкивается с подобной проблемой.
Иврит хранился на iSeries на кодовой странице 424. Это кодовая страница на иврите, поэтому все было хорошо с хранением на iSeries. У нас были некоторые драйверы печати на iSeries, которые правильно обрабатывали данные на иврите, поэтому я знал, что проблема должна быть либо в передаче между iSeries и Java, либо при создании строки данных на Java.
Оказалось, что iSeries хранит иврит в порядке печати, поэтому он уже был в том порядке, в котором мне нужно было записать его в PDF-файл. Когда мы переносили его в программу Java, мы использовали массив байтов символов RPG. Этот массив байтов символов преобразуется в Unicode, когда он отправляется методу Java. Это преобразование Юникода будет пытаться обработать данные bidi, которые уже были в правильном порядке, и вывести данные из строя. Исправление заключалось в том, чтобы переключиться на массив байтов целых чисел RPG, который не будет выполнять это преобразование. Затем, когда я получаю массив байтов в Java, я получаю CCSID задания от объекта AS400 и создаю с ним новую String.
CCSID задания возвращается в виде набора символов. Таким образом, в нашей американской системе это вернет Cp037, и я могу использовать это в конструкторе new String(byte[] source, String charsetName)
, и он преобразует массив байтов, который находится на кодовой странице EBCDIC, в кодировку Java. В системе на иврите это вернет Cp424, и я могу сделать то же самое с тем, чтобы его преобразовать.
- 1. Иврит текст в коде vba неправильно декодируется
- 2. Вызов удаленной Java-программы на iSeries из RPG
- 3. Иврит из Соединения
- 4. Как создать нового члена файла из RPG-программы?
- 5. Данные не упорядочены BY в моем отчете
- 6. Вызов процедуры RPG из C++
- 7. Атрибуты не упорядочены Для ComplexType
- 8. Как отсортировать данные json в массиве, когда данные не упорядочены?
- 9. какое решение для программы работает неправильно
- 10. Ошибка при вызове AS400 RPG из Java
- 11. QGraphicsView для 2D RPG
- 12. Пролог: проблемы с арифметикой при написании программы печати rpg stat
- 13. База данных для многопользовательской RPG
- 14. Иврит рендеринга на сайте
- 15. Работа SaveObject не работает при вызове программы RPG с Java
- 16. Почему окно программы отображается неправильно?
- 17. как они упорядочены вместе?
- 18. словарь значения не упорядочены питона
- 19. Какие вещи нужно соблюдать при изменении размеров переменных RPG-программы?
- 20. Пункт списка для текста RPG
- 21. Создание очереди очереди для RPG
- 22. C# читать иврит из текстового файла
- 23. Textarea не показывает иврит текст из mysql
- 24. Простого заказа D программы Выход неправильно
- 25. Как решить javax.crypto.IllegalBlockSizeException: данные не упорядочены по размеру блока
- 26. Python StringIO неправильно отображает данные из stderr
- 27. Напишите иврит с log4net
- 28. NSOutputStream неправильно записывает данные
- 29. необходимо отобразить символы «иврит»
- 30. Иврит в SMS-сообщениях
Конечно, не проблема RMI. – EJP
Что вы подразумеваете под этим? Я бы предположил, что это проблема с тем, как мы обрабатываем данные в программе RPG, будь то кодирование или что-то еще. Который для меня не был бы проблемой RMI, и я бы согласился с тем, что RMI не должна быть проблемой здесь. Он должен иметь возможность обрабатывать ивритские данные. –
О, хорошо, я вижу, что вы удалили тег. Я не думал о тегах как о потенциальных проблемах, а о технологии, которая используется. Думаю, имеет смысл отметить потенциальные проблемы. –