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

Часовой пояс: 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 часа


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

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


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

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