
nezorflame
11.12.2017
12:47:53
надо еще ребят из конторы зазвать

Alexander
11.12.2017
12:48:30

Vadim
11.12.2017
12:55:47
Всем добрый день!
У меня жуткая проблема которую не знаю как решить..
Я пользуюсь go для работы с ботами
Проблема в emoji. Дело в том, что "БЫвшвая" ? например в c/c++ кодируется двумя байтами -\uD83E\uDD37
А в гоу - одним байтом \U0001F937
Из -за этого у меня разваливается форматирование в entities
Вот таблица кодировки этой эмодзи http://www.fileformat.info/info/unicode/char/1f937/index.htm
А вот как "плывет" форматирование http://recoilmeblog.tggram.com/post/62
И я уже всеь мозг сломал(( Подксажите как так магически два байта в один конвертятся при json encode/decode и как этого избежать?
в Go вот эта последовательность \ud83e\udd37 - анмаршалится как одна руна \U0001f937 а мне нужно две или способ "развернуть " эту руну (\U0001f937) в две руны (\ud83e\udd37)

Google

Aleksandr
11.12.2017
13:05:53
хранишь ты в чем?


Vadim
11.12.2017
13:10:23
хранишь ты в чем?
я предполагаю что в utf8. У поля тип string. Делается json encode к \uD83E\uDD37 и в поле лежит \U0001F937 после этого. Что это за utf не очень понятно

Aleksandr
11.12.2017
13:11:31
хранишь в utf8, логично что utf32 туда не катит. все ок

Vadim
11.12.2017
13:12:24

Aleksandr
11.12.2017
13:13:07
utf16 точнее
для utf-8 это не валидные кодпойнты
телеграм просто судя по документации utf16 использует
но сам принимает utf-8

Nikolay
11.12.2017
13:20:12
а кто-то серьезно пользуется utf-32?
вроде ж 16 даже не заполнен далеко

Aleksandr
11.12.2017
13:20:43
поэтому оттуда тебе приходит два кодпойнта в 16, а обратно тебе нужно один в 8

Google

Savely
11.12.2017
13:20:52

Aleksandr
11.12.2017
13:21:15

Vadim
11.12.2017
13:25:10
utf16 точнее
конвертация ?♀️ в utf16 вернула такую последовательность рун - 鿰랤
Но не уверен что все правильно сделал(
Вообще можно utf8 в utf16 перегонять?

Savely
11.12.2017
13:26:00


Vadim
11.12.2017
13:26:45
А что у тебя в utf-8, покажи
func TestJson(t *testing.T) {
//\ud83e\udd37\u200d\u2642\ufe0f
//\U0001f937\u200d\u2642\ufe0f
//placeOfInterest := "\U0001f937\u200d\u2642\ufe0f" //string([]rune{\ud83e}) //`?♂️`
//placeOfInterest := `?`
//placeOfInterest := "\U0001F937" //`?`
placeOfInterest := string([]byte{0xf0, 0x9f, 0xa4, 0xb7}) // это она `?`
//placeOfInterest := "\ud83e\udd37" //error escape sequence is invalid unicode point
fmt.Printf("plain string: ")
fmt.Printf("%s", placeOfInterest)
fmt.Printf("\n")
fmt.Printf("quoted string: ")
fmt.Printf("%+q", placeOfInterest)
fmt.Printf("\n")
fmt.Printf("hex bytes: ")
for i := 0; i < len(placeOfInterest); i++ {
fmt.Printf("%x ", placeOfInterest[i])
}
fmt.Printf("\n")
s, err := DecodeUTF16([]byte(placeOfInterest))
if err != nil {
panic(err)
}
fmt.Println(s)
fmt.Printf("hex bytes utf 16: ")
for i := 0; i < len(placeOfInterest); i++ {
fmt.Printf("%x ", placeOfInterest[i])
}
}
func DecodeUTF16(b []byte) (string, error) {
if len(b)%2 != 0 {
return "", fmt.Errorf("Must have even length byte slice")
}
u16s := make([]uint16, 1)
ret := &bytes.Buffer{}
b8buf := make([]byte, 4)
lb := len(b)
for i := 0; i < lb; i += 2 {
u16s[0] = uint16(b[i]) + (uint16(b[i+1]) << 8)
r := utf16.Decode(u16s)
n := utf8.EncodeRune(b8buf, r[0])
ret.Write(b8buf[:n])
}
return ret.String(), nil
}


Savely
11.12.2017
13:27:03
\uD83E
Вот это то бишь?

Vadim
11.12.2017
13:27:55
неважно как присвоить строке "бывшую", она не разворачивается в utf16 исходный... Возможно я не так разворачиваю

Savely
11.12.2017
13:29:44
utf-16 в твоем случае будет D83E DD37

Vadim
11.12.2017
13:30:19

Savely
11.12.2017
13:30:42
пятизначные 1FXXX это utf-32

Aleksandr
11.12.2017
13:31:18

Savely
11.12.2017
13:33:54

Aleksandr
11.12.2017
13:34:25

Vadim
11.12.2017
13:34:27

Google

Aleksandr
11.12.2017
13:34:35

Savely
11.12.2017
13:34:45
можно нвзать utf-16 двух байтовым utf-8 тогда

Vadim
11.12.2017
13:35:10

Aleksandr
11.12.2017
13:35:12

Savely
11.12.2017
13:35:32

Aleksandr
11.12.2017
13:36:16

Savely
11.12.2017
13:37:35
?

Aleksandr
11.12.2017
13:38:33
?
если utf-8 состоит из кодпойнтов занимающих от 1 до 4 байт, то логично, что 4байтовые кодпойнты будут похожи на utf-32, который тоже состоит из 4 байтов.

Alexey
11.12.2017
14:54:00

Alexander
11.12.2017
14:54:13

Alexey
11.12.2017
14:54:33
почему не 12 :)

Vany
11.12.2017
14:54:40
мы подумали и решили что норм

Alexey
11.12.2017
14:54:50
ну лан

Alexander
11.12.2017
14:55:04

Vany
11.12.2017
14:55:19
не 12, потому что нельзя сексуальный подтекст в оскорблениях, на него видимо нужно отдельный контракт заключать

Alexey
11.12.2017
14:56:04
там будут девушки-модели? ?

Nikolay
11.12.2017
14:56:52

Vany
11.12.2017
14:56:53
судя по правилам да, но замотанные в одежду как стикер предыдущего оратора

Nikolay
11.12.2017
14:57:18

Alexey
11.12.2017
14:59:39
Говорят, что сотрудники зажрались с этими корпоративами и совсем перестали ценить халявные вечеринки. Теперь им моделей подавай, да помоложе, да покрасивее:
Спонсор поста канал @contentreview . В нем Вы найдете посты про операторов, тарифы, и другие новости технологий. Беспощадно, ежедневно, в простой и понятной подаче
goo.gl/2ftftm

Google

Alexey
11.12.2017
14:59:46
я это имел ввиду

Nikolay
11.12.2017
15:00:20
сняли кинотеатр, была красная ковровая дорожка, а еще Остин Пауэрс и Мэрилин Монро
моделей не было особо, к сожалению...

Kirill
11.12.2017
15:03:48

Alexey
11.12.2017
15:11:52
мы устроим свой гоферкон с одним спикерои и ш..... хмм... моделями

Admin
ERROR: S client not available

Alexey
11.12.2017
15:13:08
тем более, за 6к в москве можно вызвать 2 модели... на час

Fedor
11.12.2017
15:13:10
а причем тут гофер

Alexey
11.12.2017
15:15:00
Мы не планируем поднимать цену с каждым анонсированным спикером

Mike
11.12.2017
15:18:19

Vany
11.12.2017
15:21:01
А какие сейчас темы могут быть кроме "ждём 2.0" и "смотрите какую мыв либу запилили" ?

Damir
11.12.2017
15:24:23
Всем привет! Ребят вопрос: когда обновляю страницу в браузере, вебсервер на го получает 2 запроса, одинаковых это нормально?

Alexey
11.12.2017
15:24:40
да :)

Aleksandr
11.12.2017
15:25:01

Damir
11.12.2017
15:25:05
а если я что то ложить буду в БД

Nikolay
11.12.2017
15:25:07
а точно один из них не на favicon?

Damir
11.12.2017
15:25:58
ложить?
я про то что это нормально, не понял что шутка)
ща нетворк гляну

Google

Damir
11.12.2017
15:26:42
точно, фавикон

Aleksandr
11.12.2017
15:28:11
точно, фавикон
то есть прежде чем спросить ты даже не посмотрел что за запросы, но написал что одинаковых. молодец

Damir
11.12.2017
15:28:52
а у меня же обработчик на / стоит, он все равно обработает / favicon.ico ?

Vany
11.12.2017
15:29:50
Нет, он обрабатывает то, что написано в документации.

Svyatoslav
11.12.2017
15:36:14

Damir
11.12.2017
15:37:26

Alexander
11.12.2017
17:29:00

Nik
11.12.2017
18:19:58
Вопрос из разряда некрофилии
corba либа есть на golang

Den
11.12.2017
18:32:54
а как такой джисон в просто юникод преобразовать "\\u0440\\u0435\\u043c\\u043e\\"?
это .har через эмуляцию мобильного приложения в браузере собран
на 500 мегабайт, чтоб не писать запрашивалку инфы через апи

Aleksandr
11.12.2017
18:48:40
json - это тип сериализации. что тебе нужно конкретно?

Den
11.12.2017
18:52:03
и потом \u043e в utf8 файл

Aleksandr
11.12.2017
18:52:41

Den
11.12.2017
18:53:15
нет, он потом уйдет в csv конвертилку

Aleksandr
11.12.2017
18:54:19
ну тогда читай кодпойнты, заменяй двойные слэши на одинарные, с одинарным слэшом - это валидная строка