Текущее время: Вт, ноя 21 2017, 10:13

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




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

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

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

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

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

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

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

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

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


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

Зарегистрирован:
Пн, сен 30 2013, 17: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, 15:33 
Старший специалист
Старший специалист
Аватара пользователя

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

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


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

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

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

Вот итоговый код:
Код:
       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, 18:00 
Старший специалист
Старший специалист
Аватара пользователя

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

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


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

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


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

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


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

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