Текущее время: Сб, авг 02 2025, 19:00

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


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

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


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

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