
͏
14.10.2018
20:31:09
если речь идет о памяти, то нет
ищешь в тексте :, смотришь, есть ли второе и проверяешь текст между ними

Google

Undefined
14.10.2018
20:34:02
Language:
py3
Source:
print(bytes("?", "utf-8"))
Result:
b'\xf0\x9f\x8c\x9a'

Artemiy
14.10.2018
20:37:14
в каком смысле 2 символа?
Сами емодзи в тексте сообщения тг. И уже понятно, что нет: старые занимают 1 символ, а те, что по-новее -- больше.
Например, ? = 1 символ, ⚡️ = 2 символа.

3bl3gamer
14.10.2018
20:40:28
бывает и 3. и вроде даже 4

Artemiy
14.10.2018
20:44:59

3bl3gamer
14.10.2018
20:54:08
а, конкретно в этом случае вторым символом оказывается идёт какой-то https://emojipedia.org/emoji/%EF%B8%8F/
а есть например ?. это один юникодовый символ, но в некоторых языках он считается за два, потому что его номер не влезает в два байта
в ТГ он тоже считается за два, это имеет значение для всяких entities

Artemiy
14.10.2018
21:00:11

3bl3gamer
14.10.2018
21:01:52
а. ну в Го я решал это конвертированием строки в ютф16, распиливанием получившегося массива двухбайтовых интов по ентитям и конвертированием обратно в нативные строки

Google

Oleg
14.10.2018
21:01:54

Artemiy
14.10.2018
21:10:24
Вообще, странно, что в апи такое не предусмотрено.

Marlik
14.10.2018
21:13:09

3bl3gamer
14.10.2018
21:13:54
да редактор тут вообще ни при чём

Marlik
14.10.2018
21:14:35
А какая цель была?

3bl3gamer
14.10.2018
21:15:06
жир?ный текст
^ вот там жирность должна быть с 0 по 7 символ. а ТГ скажет, что жирность с 0 по 8, потому что ? у них считается за два
а в Питоне и Го он считается за один

Artemiy
14.10.2018
21:15:50

Oleksandr
14.10.2018
21:16:20

Marlik
14.10.2018
21:16:48
Внутрь текста вставлять эмоджи? Нахера?

3bl3gamer
14.10.2018
21:18:53
> ?=1
точно? чёта в ЖСе он тоже два
> как питоном вычислить
возможно, так:
> len('?'.encode('utf-16le')) // 2
2
> len('Q'.encode('utf-16le')) // 2
1

Undefined
14.10.2018
21:23:00
В ютф8 же все вроде

3bl3gamer
14.10.2018
21:24:32
В ютф8 же все вроде
всё в ютф-8. но при конвертации в ютф-16 эти емодзи развалятся на суррогатную пару (т.е. два ютф16-символа) и при нарезке строки по телеграмным entity смещения будут правильные
т.е. можно всю строку сконвертировать в этот utf-16le, разрезать по ентятям и каждый кусочек сконвертировать обратно в utf-8.
ну, может есть способ получше

Artemiy
14.10.2018
21:29:18

3bl3gamer
14.10.2018
21:31:12

Artemiy
14.10.2018
21:31:47
>>> len('?'.encode('utf-16le'))
4
>>> len('▶️'.encode('utf-16le'))
4

Google

Artemiy
14.10.2018
21:32:23
Первый занимает 1, второй -- 2.

Undefined
14.10.2018
21:34:40
Language:
py3
Source:
print(bytes('?', 'utf-8'), bytes('?', 'utf-16le'))
Result:
b'\xf0\x9f\x98\x80' b'=\xd8\x00\xde'

Artemiy
14.10.2018
21:37:34
>>> len(bytes('?', 'utf-8'))
4
>>> len(bytes('▶️', 'utf-8'))
6
>>> len(bytes('?', 'utf-16le'))
4
>>> len(bytes('▶️', 'utf-16le'))
4

3bl3gamer
14.10.2018
21:38:18
Тут был бот, возвращающий жсон в ответ на сообщение?

kirussian
14.10.2018
21:39:20
привет! я вообще не понимаю в этом, может подскажете:
пишу бота на питоне, хочу залить все на сервер, купил vds и теперь не знаю, какую ОС выбрать - FreeBS, Винда, Ubuntu Virtual Desctop, Ubuntu Server, CentOs ?

Artemiy
14.10.2018
21:39:43

Undefined
14.10.2018
21:45:40
Ubuntu ставь и норм

kirussian
14.10.2018
21:46:32

Undefined
14.10.2018
21:47:07

3bl3gamer
14.10.2018
21:47:28
?Й
{
"update_id": 919867504,
"message": {
"message_id": 97262,
"from": {
"id": 78542303,
"is_bot": false,
"first_name": "3bl3gamer",
"username": "zblzgamer",
"language_code": "ru-RU"
},
"chat": {
"id": 78542303,
"first_name": "3bl3gamer",
"username": "zblzgamer",
"type": "private"
},
"date": 1539553635,
"text": "?Й",
"entities": [
{
"offset": 2,
"length": 1,
"type": "bold"
}
]
}
}

3bl3gamer
14.10.2018
21:47:40
Вот, тоже два символа
Й там жирное

kirussian
14.10.2018
21:51:10

3bl3gamer
14.10.2018
21:54:19
а вот так емодзя уже считается за 4 символа:
"text": "??Q",
"entities": [
{
"offset": 4,
"length": 1,
"type": "bold"
}
]

Artemiy
14.10.2018
21:55:55
Ох сложно.

3bl3gamer
14.10.2018
21:56:53
7 символов:
"text": "???Q",
"entities": [
{
"offset": 7,
"length": 1,
"type": "bold"
}
]

Artemiy
14.10.2018
21:57:31
Главное, я не вижу никакой зависимости между количеством символов и длиной в байтах.
!report

Google

Бананиум
14.10.2018
21:58:43
!report
Мы примем все необходимые меры, спасибо.

Artemiy
14.10.2018
21:59:38

3bl3gamer
14.10.2018
22:00:01
хотя не, наверно не FFFF, а что-то поменьше

Admin
ERROR: S client not available

Artemiy
14.10.2018
22:01:56
Ещё б понять, с каких он будет считать за три, четыре, и т.д.

3bl3gamer
14.10.2018
22:02:37

Artemiy
14.10.2018
22:04:52
Т.е. задача нихрена не тривиальная, короче.

3bl3gamer
14.10.2018
22:05:51

Artemiy
14.10.2018
22:07:42
А пожарника он считает за 4, но он 7.
Математика бессильна.

3bl3gamer
14.10.2018
22:08:26
а там три обычных емодзи и ещё один мелкий символ, наверно опять https://emojipedia.org/emoji/%EF%B8%8F/
там https://emojipedia.org/emoji/%E2%80%8D/
едрить там костылей

Artemiy
14.10.2018
22:10:37
Как бы сказал классик: "обоссать и сжечь".

3bl3gamer
14.10.2018
22:11:41

Never give up!
14.10.2018
22:13:29
Ищу создателя этого бота:
@QiwiWalletapibot

3bl3gamer
14.10.2018
22:13:35

Artemiy
14.10.2018
22:15:49
Хм, спасибо большое. Сейчас поковыряю.

Google

Marlik
14.10.2018
23:41:15

Vitaly
15.10.2018
03:07:33
нашел гифку по питону

Honor
15.10.2018
03:24:40
По js же

Vitaly
15.10.2018
03:29:05
нет
питон

Honor
15.10.2018
03:36:28
Не знай, у меня в коде все логично

Vitaly
15.10.2018
03:42:09
значит не по пепу

Undefined
15.10.2018
04:59:55
Это антиреклама?

Marlik
15.10.2018
05:06:59
Лох не мамонт, 21 век, а всё по прежнему.

Ivan
15.10.2018
05:11:10
!report

Бананиум
15.10.2018
05:11:10
!report
Мы примем все необходимые меры, спасибо.

Rocket
15.10.2018
05:11:57
Как ни зайду - тут Виталий все хейтит. Больная тема, видать. ??♂️

?? Eugene
15.10.2018
05:45:28

Boris
15.10.2018
05:45:49
Душит змею, так сказать...