Текущее время: Вс, авг 03 2025, 06:08

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Как нормально присвоить тип XSTRING типу STRING в юникодах?
СообщениеДобавлено: Ср, сен 05 2007, 16:21 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
При условии, что в XSTRING текстовая информация, но в однобайтовых символах. И я хочу работать с этой инфой, как с обычной строкой.
Конвертить что ли из кодировки в кодировку?

p.s.
Блин, я рехнусь скоро с этими юникодами. Простые вещи теперь стали проблемными...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 05 2007, 17:47 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Поскольку, если мне не изменяет память, юникод 2хбайтный (я предпологаю что САП юзает UTF-16), то простого решения нет.
Также я могу предположить, что в вашей исходной строке используется USC-4. В таком случае необходимо просто дополнить символ нулями слева до двух байт. Если, конечно, в строке нет спецсимволов.

Translate to codepage в юникод системах не работает, насколько я помню. У меня в ECC 6.0 и синтаксис такой невозможен уже.

Лично я бы, в таком случае, написал набор макросов реализующих стандартную функциональность (split, condense, etc.).
Или свой конвертер в юникод, если нужен еще и вывод на экран.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 06 2007, 10:12 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Пономарев Артем написал:
В таком случае необходимо просто дополнить символ нулями слева до двух байт.

Если бы слева... Я тут сталкивался с такой ситуацией, когда у заказчика в системе разработки нули были с одной стороны, а в тестовой с другой! :) От чего это зависит, я так и не понял, пришлось выкручиваться.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как нормально присвоить тип XSTRING типу STRING в юникодах?
СообщениеДобавлено: Чт, сен 06 2007, 10:36 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Parazit написал:
При условии, что в XSTRING текстовая информация, но в однобайтовых символах. И я хочу работать с этой инфой, как с обычной строкой.
Конвертить что ли из кодировки в кодировку?

p.s.
Блин, я рехнусь скоро с этими юникодами. Простые вещи теперь стали проблемными...
Можно попробовать для пребразования XSTRING => STRING использовать класс CL_ABAP_CONV_IN_CE

_________________
"После" - не значит "вследствие"


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

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Parazit написал:
Пономарев Артем написал:
В таком случае необходимо просто дополнить символ нулями слева до двух байт.

Если бы слева... Я тут сталкивался с такой ситуацией, когда у заказчика в системе разработки нули были с одной стороны, а в тестовой с другой! :) От чего это зависит, я так и не понял, пришлось выкручиваться.


Это зависит от процессора и называется big или little endian.
Или более наглядно, в каком порядке процесор читает из памяти байты для числа. Старшие разряды в старших байтах или младших.
Для 4.7 значение можно получить из cl_abap_char_utilities=>endian
"B" и "L".
Для других грубо по версии операционки.
Windows в большинстве своем живет на Intel - это little endian,
Unix и Mac на процессорах с RISC архитектурой - big endian.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 06 2007, 15:12 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Ну собственно я для Win и писал.
Правда от процессора это не зависит. Это зависит от способа представления юникода.
Есть: UTF-16BE, UTF-16LE. То же с 32 (т.е. 4х байтовые, где юзают - не знаю).
Винда использует UTF-16LE.
В юникс-бэйзд юзают, в силу исторических причин, вообще UTF-8.
Хотя в новых вериях вроде уже как раз UTF-32 в одном из вариантов.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 06 2007, 15:21 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Артем, я Parazit-у писал ;-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 06 2007, 15:25 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
В цитировании нулевым уровнем является мой пост.
Поэтому ответил. Тем более что неточность была. Про процессоры. Ага :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 06 2007, 17:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
О, кажись получилось.
Code:
  Call method CL_ABAP_CONV_IN_CE=>CREATE
    exporting ENCODING = '1504'
    receiving CONV = Conv.

  Call method Conv->Convert
    exporting INPUT = Content
    importing DATA = Res.


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

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


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

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


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

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