unicode character U+203C

Clarion, Clarion 7

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

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

unicode character U+203C

Сообщение finsoftrz »

Предположим, у нас есть строка символов в utf8. Я хочу добавить к ней символ двойной восклицательный знак - ‼. Информация по нему:
http://www.fileformat.info/info/unicode ... /index.htm
Что-то не соображу, это в кларионе можно сделать?
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

unicode character U+203C

Сообщение Дед Пахом »

Там же написано как:
UTF-8 (hex) 0xE2 0x80 0xBC (e280bc)
С уважением, ДП
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4557
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

unicode character U+203C

Сообщение finsoftrz »

Разобрался. Неправильно сформулировал. Мне надо было вставить этот символ в 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)
C6/C11, ШВС, tps/btrieve.
seawolf
Старожил
Сообщения: 213
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

unicode character U+203C

Сообщение seawolf »

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

Строка пароля в юникоде, все машина стоят на кодировке 1251 - пытался закодировать его как ascii последовательность %C2%A3 и далее преобразовать в строку юникод через MultiByteToWideChar(1251,0,Address(p_Str),len(clip(p_Str)),Address(UnicodeText),L). На стопе фунта этого не видать. Уже "закипел" поэтому надеюсь на подсказку.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

unicode character U+203C

Сообщение kreator »

seawolf писал(а): 01 Февраль 2019, 14:11 На стопе фунта этого не видать. Уже "закипел" поэтому надеюсь на подсказку.
А на каком стопе Вы хотите его увидеть? Скиньте строку в файл с кодировкой Юникод и увидите. Плюс возможно ошибка при кодировке. Если несложно, код перекодирования в Юникод приведите. Если уверены на 100%, то не надо. Перекодировка в Юникод через приведённую Вами функцию - отдельный дурдом.
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

unicode character U+203C

Сообщение Дед Пахом »

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

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

password = '<0A1h><0B2h>'
и никаких преобразований MultiFuckToWideFuck.
С уважением, ДП
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

unicode character U+203C

Сообщение RaFaeL »

Дед Пахом писал(а): 01 Февраль 2019, 15:19Пишем пароль в текстовый файл (прямо в Блокноте) и сохраняем как юникод (utf-8 либо utf-16, что требуется). Затем открываем этот файл в hex-редакторе и записываем байты в код, типа
... и не забываем пропустить BOM
seawolf
Старожил
Сообщения: 213
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

unicode character U+203C

Сообщение seawolf »

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

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 видим фунт

Спасибо всем кто принял участие!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

unicode character U+203C

Сообщение Дед Пахом »

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

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

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