Страница 1 из 1

unicode character U+203C

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

unicode character U+203C

Добавлено: 26 Сентябрь 2018, 0:24
Дед Пахом
Там же написано как:
UTF-8 (hex) 0xE2 0x80 0xBC (e280bc)

unicode character U+203C

Добавлено: 26 Сентябрь 2018, 7:26
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)

unicode character U+203C

Добавлено: 01 Февраль 2019, 14:11
seawolf
А мне никак не вставить в строку пароля для подключения к фтп символ фунта - £
Среда наша прямо в тексте его не поддерживает (c63,c9, c11)!

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

unicode character U+203C

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

unicode character U+203C

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

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

password = '<0A1h><0B2h>'
и никаких преобразований MultiFuckToWideFuck.

unicode character U+203C

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

unicode character U+203C

Добавлено: 01 Февраль 2019, 22:15
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 видим фунт

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

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>'