Kurze Beschreibung:
Sie werden intern als goomoji
bezeichnet und scheinen eine nicht standardmäßige UTF-8-Erweiterung zu sein. Wenn Google Mail auf eines dieser Zeichen stößt, wird es durch das entsprechende Symbol ersetzt. Ich konnte keine Dokumentation dazu finden, aber ich konnte das Format zurückentwickeln.
Was sind diese Symbole?
Diese Symbole sind eigentlich die Symbole, die im Bereich "Emoticons einfügen" angezeigt werden.
Obwohl ich das 52E
Symbol in der Liste nicht sehe , gibt es mehrere andere, die der gleichen Konvention folgen.
Beachten Sie, dass es auch einige Symbole gibt, deren Namen vorangestellt sind, z . Ich konnte nicht feststellen, ob oder wie diese Symbole auf diese Weise verwendet werden können.gtalk.03C
Was ist das für eine Daten-URI?
Es ist eigentlich kein Daten-URI , obwohl er einige Ähnlichkeiten aufweist. Es handelt sich tatsächlich um eine spezielle Syntax zum Codieren von Nicht-ASCII-Zeichen in E-Mail-Betreffs, die in RFC 2047 definiert ist . Grundsätzlich funktioniert es so.
=?charset?encoding?data?=
In unserer Beispielzeichenfolge haben wir also die folgenden Daten.
=?UTF-8?B?876Urg==?=
charset
= UTF-8
encoding
= B
(bedeutet base64)
data
= 876Urg==
Wie funktioniert es?
Wir wissen, dass das irgendwie 876Urg==
die Ikone bedeutet 52E
, aber wie?
Wenn wir base64 dekodieren 876Urg==
, erhalten wir 0xf3be94ae
. Dies sieht in Binärform wie folgt aus:
11110011 10111110 10010100 10101110
Diese Bits stimmen mit einem 4-Byte-UTF-8-codierten Zeichen überein.
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Die relevanten Bits sind also die folgenden:
011 111110 010100 101110
Oder wenn ausgerichtet:
00001111 11100101 00101110
In hexadezimaler Reihenfolge sind diese Bytes die folgenden:
FE52E
Wie Sie sehen können, stimmt das FE
Präfix mit Ausnahme des Präfixes, mit dem die goomoji
Symbole vermutlich von anderen UTF-8-Zeichen unterschieden werden sollen, mit 52E
dem Symbol in der Symbol-URL überein . Einige Tests belegen, dass dies auch für andere Symbole gilt.
Klingt nach viel Arbeit, gibt es einen Konverter?:
Dies kann natürlich per Skript erfolgen. Ich habe den folgenden Python-Code für meine Tests erstellt. Diese Funktionen können die Base64-codierte Zeichenfolge in und aus der kurzen Hex-Zeichenfolge konvertieren, die in der URL enthalten ist. Beachten Sie, dass dieser Code für Python 3 geschrieben wurde und nicht mit Python 2 kompatibel ist.
Konvertierungsfunktionen:
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')
Beispiele:
print(goomoji_decode('876Urg=='))
print(goomoji_encode('52E'))
Ausgabe:
52E
876Urg==
Um die URL eines Symbols zu finden, müssen Sie natürlich lediglich einen neuen Entwurf in Google Mail erstellen, das gewünschte Symbol einfügen und den DOM-Inspektor Ihres Browsers verwenden.