unicode character U+203C

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1172
Зарегистрирован: 06 Ноябрь 2014, 12:48

unicode character U+203C

Сообщение finsoftrz » 25 Сентябрь 2018, 23:55

Предположим, у нас есть строка символов в utf8. Я хочу добавить к ней символ двойной восклицательный знак - ‼. Информация по нему:
http://www.fileformat.info/info/unicode ... /index.htm
Что-то не соображу, это в кларионе можно сделать?
Рязань решает.

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2240
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

unicode character U+203C

Сообщение Дед Пахом » 26 Сентябрь 2018, 0:24

Там же написано как:
UTF-8 (hex) 0xE2 0x80 0xBC (e280bc)
С уважением, ДП

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 1172
Зарегистрирован: 06 Ноябрь 2014, 12:48

unicode character U+203C

Сообщение finsoftrz » 26 Сентябрь 2018, 7:26

Разобрался. Неправильно сформулировал. Мне надо было вставить этот символ в xml. Такие символы вставляются в виде последовательности ‼ (конкретно для u+203c). Это потребовалось для печати qr-кодов в ккт СП802-Ф. Строка для qr-кода чека в итоге выглядит так:

Код: Выделить всё

Loc:Str='‼?q0091' & 't=' & year(DChH:Date) & format(month(DChH:Date),@n02) & format(day(DChH:Date),@n02) & 'T' & format(DChH:Time,@t02) & '&s=' & clip(left(format(Loc:SumIt,@n_12.2))) & '&fn=' & clip(FsKKM_SPL.GroupParam.ParamNumCashFN) & '&i=' & clip(DChH:CheckFD) & '&fp=' & clip(DChH:CheckFP) & '&n=' & (DChH:TypeOper+1)
Рязань решает.

seawolf
Активист
Сообщения: 190
Зарегистрирован: 08 Июль 2005, 10:23
Откуда: St. Petersburg

unicode character U+203C

Сообщение seawolf » 01 Февраль 2019, 14:11

А мне никак не вставить в строку пароля для подключения к фтп символ фунта - £
Среда наша прямо в тексте его не поддерживает (c63,c9, c11)!

Строка пароля в юникоде, все машина стоят на кодировке 1251 - пытался закодировать его как ascii последовательность %C2%A3 и далее преобразовать в строку юникод через MultiByteToWideChar(1251,0,Address(p_Str),len(clip(p_Str)),Address(UnicodeText),L). На стопе фунта этого не видать. Уже "закипел" поэтому надеюсь на подсказку.

kreator
Ветеран
Сообщения: 3236
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

unicode character U+203C

Сообщение kreator » 01 Февраль 2019, 15:09

seawolf писал(а):
01 Февраль 2019, 14:11
На стопе фунта этого не видать. Уже "закипел" поэтому надеюсь на подсказку.
А на каком стопе Вы хотите его увидеть? Скиньте строку в файл с кодировкой Юникод и увидите. Плюс возможно ошибка при кодировке. Если несложно, код перекодирования в Юникод приведите. Если уверены на 100%, то не надо. Перекодировка в Юникод через приведённую Вами функцию - отдельный дурдом.
We are hard at work… for you. :)

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2240
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

unicode character U+203C

Сообщение Дед Пахом » 01 Февраль 2019, 15:19

Пишем пароль в текстовый файл (прямо в Блокноте) и сохраняем как юникод (utf-8 либо utf-16, что требуется). Затем открываем этот файл в hex-редакторе и записываем байты в код, типа

Код: Выделить всё

password = '<0A1h><0B2h>'
и никаких преобразований MultiFuckToWideFuck.
С уважением, ДП

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 852
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

unicode character U+203C

Сообщение RaFaeL » 01 Февраль 2019, 15:23

Дед Пахом писал(а):
01 Февраль 2019, 15:19
Пишем пароль в текстовый файл (прямо в Блокноте) и сохраняем как юникод (utf-8 либо utf-16, что требуется). Затем открываем этот файл в hex-редакторе и записываем байты в код, типа
... и не забываем пропустить BOM

seawolf
Активист
Сообщения: 190
Зарегистрирован: 08 Июль 2005, 10:23
Откуда: St. Petersburg

unicode character U+203C

Сообщение seawolf » 01 Февраль 2019, 22:15

Да, никаких преобразований юникод не потребовалось. Сделал так:

1) Сохранил пароль в текстовом файле с поддержкой юникод и преобразовал в hex.
2) Получилось строка что-то типа '6e 6f ..... '
3) Затем собрал cstring FtpPassword= chr(EVALUATE('06eh')) & chr(EVALUATE('06fh')) ......
4) Затем подал строку в параметр пароля в InternetConnect(hSession, FtpHost, 21, FtpLogin, FtpPassword, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0)
5) вернулся handle соединения
6) попытка на стопе посмотреть значение FtpPassword - вместо фунта на машине с 1251 видим пару букв BJ, а на машине с кодировкой 1252 видим фунт

Спасибо всем кто принял участие!

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2240
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

unicode character U+203C

Сообщение Дед Пахом » 01 Февраль 2019, 22:21

seawolf писал(а):
01 Февраль 2019, 22:15
Затем собрал cstring FtpPassword= chr(EVALUATE('06eh')) & chr(EVALUATE('06fh')) ......
так проще (терминальный 0 для cstring, хотя может и не надо)

Код: Выделить всё

FtpPassword = '<06eh,06fh...,0>'
С уважением, ДП

Ответить