Текущее время: Пн, авг 04 2025, 08:00

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Юникод 4 байта
СообщениеДобавлено: Ср, фев 06 2008, 13:18 
Начинающий
Начинающий

Зарегистрирован:
Ср, авг 02 2006, 16:09
Сообщения: 18
Подскажите, кто сталкивался, как с помощью классов CL_ABAP_CONV*** (ну или чем другим) преобразовать HEX -> CHAR, если каждый символ задается 4 байтами, (пример '04130413' -> 'ГГ').
Вся проблема в том, что класс CL_ABAP_CONV_OUT_CE пытается преобразовать строку '04130413' видя в ней не 2 а 4 символа (по 2 байта каждый) - каким параметром сообщить классу, что у меня 4-х байтовая кодировка? Где это может настраиваться?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 06 2008, 13:40 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
CL_ABAP_CONV_OUT_CE конвертирует из системного формата во внешний. Судя по "HEX -> CHAR" Вам нужно наоборот. Так что используйте CL_ABAP_CONV_IN_CE.

Номер внешнего формата для 4-байтного Юникода можно посмотреть в таблице tcp00.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 06 2008, 14:41 
Начинающий
Начинающий

Зарегистрирован:
Ср, авг 02 2006, 16:09
Сообщения: 18
Ну конечно CL_ABAP_CONV_IN_CE (с CL_ABAP_CONV_OUT_CE это опечатка). Если я все верно понимаю, то для каждой из кодовых страниц в поле TCP00-CPENCODING задается кол. байт на один символ. Тогда вопрос, что я делаю не так, что в итоге получаю
text = ####?

DATA:
text(100) TYPE c,
buffer(4) TYPE x,
conv TYPE REF TO cl_abap_conv_in_ce.

conv = cl_abap_conv_in_ce=>create(
encoding = '1504'
endian = 'L' ).

buffer = '04130413'. " '04130413' -> 'ГГ'

conv->convert(
EXPORTING input = buffer
IMPORTING data = text ).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 06 2008, 15:51 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
bcuser написал(а):
Если я все верно понимаю, то для каждой из кодовых страниц в поле TCP00-CPENCODING задается кол. байт на один символ.

Неверно. 1504 - это однобайтовая Microsoft Windows 1251 mit kyrillisch.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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