Kısa Açıklama:
Dahili olarak olarak adlandırılırlar goomoji
ve standart olmayan bir UTF-8 uzantısı gibi görünürler. Gmail bu karakterlerden biriyle karşılaştığında, karşılık gelen simge ile değiştirilir. Onlarla ilgili herhangi bir belge bulamadım, ancak formatı tersine çevirebildim.
Bu simgeler nelerdir?
Bu simgeler aslında "İfade ekle" panelinin altında görünen simgelerdir.
Ben görmüyorum iken 52E
listede simgesini aynı öngörüye orada birkaç diğerleri.
Gibi isimleri ön ekli bazı simgeler de olduğunu unutmayın . Bu simgelerin bu şekilde kullanılıp kullanılamayacağını veya nasıl kullanılacağını belirleyemedim.gtalk.03C
Bu Veri URI'si nedir?
Aslında bir Veri URI'si değil , ancak bazı benzerlikleri paylaşıyor. Aslında, RFC 2047'de tanımlanan e-posta konularındaki ASCII olmayan karakterleri kodlamak için özel bir sözdizimi . Temelde şu şekilde çalışır.
=?charset?encoding?data?=
Öyleyse, örnek dizimizde aşağıdaki verilere sahibiz.
=?UTF-8?B?876Urg==?=
charset
= UTF-8
encoding
= B
(base64 anlamına gelir)
data
= 876Urg==
Peki nasıl çalışıyor?
Bunun bir şekilde 876Urg==
simge anlamına geldiğini biliyoruz 52E
, ama nasıl?
Base64 kodunu çözersek 876Urg==
, elde ederiz 0xf3be94ae
. Bu, ikili olarak aşağıdaki gibi görünür:
11110011 10111110 10010100 10101110
Bu bitler, 4 baytlık UTF-8 kodlanmış bir karakterle tutarlıdır.
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Dolayısıyla ilgili bitler şu şekildedir:
011 111110 010100 101110
Veya hizalandığında:
00001111 11100101 00101110
Onaltılık olarak, bu baytlar aşağıdaki gibidir:
FE52E
Gördüğünüz gibi FE
, muhtemelen goomoji
simgeleri diğer UTF-8 karakterlerinden ayıran önek dışında 52E
, simge URL'sindeki ile eşleşiyor . Bazı testler bunun diğer simgeler için geçerli olduğunu kanıtlıyor.
Çok iş gibi geliyor, dönüştürücü var mı ?:
Bu elbette senaryo ile yazılabilir. Testim için aşağıdaki Python kodunu oluşturdum. Bu işlevler, base64 kodlu dizeyi URL'de bulunan kısa onaltılık dizeye dönüştürebilir. Unutmayın, bu kod Python 3 için yazılmıştır ve Python 2 uyumlu değildir.
Dönüştürme fonksiyonları:
import base64
def goomoji_decode(code):
#Base64 decode.
binary = base64.b64decode(code)
#UTF-8 decode.
decoded = binary.decode('utf8')
#Get the UTF-8 value.
value = ord(decoded)
#Hex encode, trim the 'FE' prefix, and uppercase.
return format(value, 'x')[2:].upper()
def goomoji_encode(code):
#Add the 'FE' prefix and decode.
value = int('FE' + code, 16)
#Convert to UTF-8 character.
encoded = chr(value)
#Encode UTF-8 to binary.
binary = bytearray(encoded, 'utf8')
#Base64 encode return end return a UTF-8 string.
return base64.b64encode(binary).decode('utf-8')
Örnekler:
print(goomoji_decode('876Urg=='))
print(goomoji_encode('52E'))
Çıktı:
52E
876Urg==
Ve elbette, bir simgenin URL'sini bulmak, Gmail'de yeni bir taslak oluşturmanızı, istediğiniz simgeyi eklemenizi ve tarayıcınızın DOM denetçisini kullanmanızı gerektirir.