Текущее время: Пт, мар 29 2024, 01:34

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Перекодировка части XML в base64
СообщениеДобавлено: Вт, июн 14 2016, 04:20 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 08:54
Сообщения: 318
Откуда: Владивосток, Россия
Пол: Мужской
Здравствуйте!

Разбираться, конечно, тяжело, ибо я пользуюсь стандартными классами, но, чисто навскидку (по аналогии с кодированием):

byte data[] = x.getBytes("UTF-8");

Может, так поможет? У меня, во всяком случае, нормально русский текст кодирует/декодирует.
Хотя, при декодировании без разницы должно быть.

Скорее, вот тут можно попробовать:

return new String(dest, "UTF-8");

P.S. Странно вообще-то. Специально проверил у себя в графическом мэппинге - кодирование и декодирование нормально распознает русский язык без всяких дополнительных параметров.

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Перекодировка части XML в base64
СообщениеДобавлено: Вт, июн 14 2016, 11:23 
Начинающий
Начинающий

Зарегистрирован:
Пн, сен 30 2013, 16:22
Сообщения: 9
Вы пробовали именно тот код который я привел?

Попробовал вашу рекомендацию, но не дает даже активировать изменение пишет ошибка в коде:
11:20:44 Start of test
Source code has syntax error: /sapVPQ/usr/sap/VPQ/DVEBMGS12/j2ee/cluster/server0/./temp/classpath_resolver/Mape915edc0320811e6b360000007a655ca/source/com/sap/xi/tf/_DecodeBase64_.java:92: unreported exception java.io.UnsupportedEncodingException; must be caught or declared to be thrown return new String(dest, "UTF-8"); ^ 1 error
:?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Перекодировка части XML в base64
СообщениеДобавлено: Вт, июн 14 2016, 14:33 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 08:54
Сообщения: 318
Откуда: Владивосток, Россия
Пол: Мужской
Код именно ваш, правда, PI 7.4.
А ошибка потому, что при добавлении в конструктор строки "UTF-8" нужно обернуть его в try...catch, как в первом коде.

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Перекодировка части XML в base64  Тема решена
СообщениеДобавлено: Вт, июн 14 2016, 16:10 
Начинающий
Начинающий

Зарегистрирован:
Пн, сен 30 2013, 16:22
Сообщения: 9
Вы просто мега!!!, я весь мозг сломал :roll: Спасибо огромное!

Все работает, русский язык теперь не проблема)

Вот итоговый код:
Code:
       try {
        if (x == null)  return  null;
        byte data[] = x.getBytes();

        int tail = data.length;
        while (data[tail-1] == '=')  tail--;
        byte dest[] = new byte[tail - data.length/4];

        // ascii printable to 0-63 conversion
        for (int idx = 0; idx <data.length; idx++)
        {
          if (data[idx] == '=')    data[idx] = 0;
          else if (data[idx] == '/') data[idx] = 63;
          else if (data[idx] == '+') data[idx] = 62;
          else if (data[idx] >= '0'  &&  data[idx] <= '9')
            data[idx] = (byte)(data[idx] - ('0' - 52));
          else if (data[idx] >= 'a'  &&  data[idx] <= 'z')
            data[idx] = (byte)(data[idx] - ('a' - 26));
          else if (data[idx] >= 'A'  &&  data[idx] <= 'Z')
            data[idx] = (byte)(data[idx] - 'A');
        }

        // 4-byte to 3-byte conversion
        int sidx, didx;
        for (sidx = 0, didx=0; didx < dest.length-2; sidx += 4, didx += 3)
        {
          dest[didx]   = (byte) ( ((data[sidx] << 2) & 255) |
                  ((data[sidx+1] >>> 4) & 3) );
          dest[didx+1] = (byte) ( ((data[sidx+1] << 4) & 255) |
                  ((data[sidx+2] >>> 2) & 017) );
          dest[didx+2] = (byte) ( ((data[sidx+2] << 6) & 255) |
                  (data[sidx+3] & 077) );
        }
        if (didx < dest.length)
        {
          dest[didx]   = (byte) ( ((data[sidx] << 2) & 255) |
                  ((data[sidx+1] >>> 4) & 3) );
        }
        if (++didx < dest.length)
        {
          dest[didx]   = (byte) ( ((data[sidx+1] << 4) & 255) |
                  ((data[sidx+2] >>> 2) & 017) );
        }

         return new String(dest, "UTF-8");

} catch (UnsupportedEncodingException e) {
             throw new RuntimeException("cannot convert to UTF: " + e.getMessage());
      }


Премного благодарен!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Перекодировка части XML в base64
СообщениеДобавлено: Вт, июн 14 2016, 17:00 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 08:54
Сообщения: 318
Откуда: Владивосток, Россия
Пол: Мужской
Рад, что все получилось, коллега! ☺

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB