Seite 1 von 2

Emojis in PB und B4X

Verfasst: 01.05.2024 16:59
von Andi
In PB kann ich ein Emoji über einen Unicode-Wert erzeugen:

Code: Alles auswählen

Procedure.s ChrU(Codepoint.i)
  If (Codepoint > $FFFF)
    Result.s = "  "
    Codepoint - $10000
    PokeU(@Result, $D800 + ((Codepoint >> 10) & $3FF))
    PokeU(@Result + 2, $DC00 + (Codepoint & $3FF))
    ProcedureReturn Result
  ElseIf (Codepoint >= $0000)
    ProcedureReturn Chr(Codepoint)
  Else
    ProcedureReturn ""
  EndIf
EndProcedure

Debug ChrU($1F600) ;Smiley
In B4X (B4X ist eine Entwicklungsumgebung von Erel Unziel u. a. zur Erstellung von Android-Apps) funktioniert das ähnlich:

Code: Alles auswählen

Sub emoji_UTS (codepoint As Int) As String
	Dim bc As ByteConverter 
	Dim b() As Byte = bc.IntsToBytes(Array As Int(codepoint))
	'
	Return BytesToString(b, 0, 4, "UTF32")
End Sub

log("Mein Emoji: " & emoji_UTS(0x1F00)
Ich möchte jetzt PB und B4X zusammenbringen. Das heißt: ich sende in PB einen Text mit Emoji mittels einer PushNotification (implementiert durch ein php-Script) an meine App. Allerdings kommen als Emoji nur zwei Fragezeichen an.

Meine Frage ist (ich weiß, es ist sehr speziell), wie ich den obigen PB-Code abändern muss, damit ein Smiley in meiner App dargestellt wird.

Re: Emojis in PB und B4X

Verfasst: 01.05.2024 19:21
von H.Brill
Normalerweise bedeuten 2 ??, daß der Font nicht stimmt. Das habe ich auch schon öfter gehabt.
Es könnte aber auch an dem php-Script liegen.
Und : Wo zeigst du das Icon in B4A an ? (Editfeld ?)
Vielleicht mußt du nur die Schriftart auf deinem Phone ändern. Dann wären sie veilleicht auch bunt.
Auf dem PC gibt es ja auch einen Font namens Segoe UI Emoji. Auf einem HTML-Window klappt das dann.
Schau mal, ob es auf deinem Smartphone auch so einen Font gibt.
Evtl. kommst du dann weiter.

Re: Emojis in PB und B4X

Verfasst: 01.05.2024 19:41
von Andi
Vielen Dank für Deine Hinweise.

Ja, ich benutze in B4A zur Darstellung meiner PushNotification ein EditText view und in dem sehe ich auch die beiden ??
Am php-Script kann es m. E. nicht liegen; denn ich habe dort
utf8_encode($my_text) durch mb_convert_encoding($my_text, 'UTF-8', mb_list_encodings())
ersetzt. Und wenn ich mir von meiner App selber eine PushNotification mit Emojis schicke, werden die Emojis in dem EditText auch richtig angezeigt.

Re: Emojis in PB und B4X

Verfasst: 02.05.2024 07:16
von H.Brill
Such vielleicht mal im B4X - Forum.

https://www.b4x.com/android/forum/threa ... ost-385373

Vielleicht kommst du da weiter. Dort gibt es auch noch mehr Beiträge.

Re: Emojis in PB und B4X

Verfasst: 02.05.2024 07:19
von TroaX
Wenn dir in der Debug vom ersten Code das Emoji ausgegeben wird, sollte das ja schonmal funktionieren. Ich kann es gerade selber nicht testen. Aber du hast ja nicht geschrieben, das es nicht klappt. Also wird die Prozedur ihren Job wohl machen.

Das Problem hier ist aber, das wir hier 3 Techologien haben, durch die das Emoji geschickt wird. Wenn das PHP Script das Emoji sauber an die B4X App weitergibt, dann kann es durchaus in der Kommunikation zwischen PB und PHP hapern. Wenn die Funktionen/Methodem von oben für sich genommen funktionieren, dann dürfte das Problem an anderer Stelle zu suchen sein. Und über alles andere wissen wir fast garnichts.

Re: Emojis in PB und B4X

Verfasst: 02.05.2024 09:14
von H.Brill

Code: Alles auswählen

utf8_encode($my_text) durch mb_convert_encoding($my_text, 'UTF-8', mb_list_encodings())
Ich kenne mich da zwar nicht so aus, aber evtl. ist UTF8 - Codierung in php und UT32-Codierung
bei B4A nicht das gleiche.

Re: Emojis in PB und B4X

Verfasst: 02.05.2024 13:50
von Andi
Ist schon komisch:
Wenn ich mit PB und php-Script ein "Herz" - also Chr(10084) - als PushNotification versende, wird es zwar im PB-Debugger als Herz angezeigt, aber beim Empfänger (also meiner App) kommt nur ein Fragezeichen an.
Wenn ich chr(10084) über eine App, aber mithilfe des gleichen php-Scripts verschicke, kommt das Herz in der App an.

Das php-Script ist also okay, und PB ist auch okay. Also irgendwie scheint "Chr(10084)-B4A" nicht das Gleiche wie "Chr(10084)-PB" zu sein.

Re: Emojis in PB und B4X

Verfasst: 02.05.2024 15:18
von H.Brill
Wie ist denn deine PB - IDE eingestellt ?
Reiner Text oder UTF8 ?
Vielleicht hängt es daran.

Ist nur mal eine Vermutung von mir.
Wie ich das dann sehe, ist das Problem bzw. der Effekt bei PB zu suchen.
Schau mal noch im engl. Forum. Da könnte ja auch was dazu stehen.

Re: Emojis in PB und B4X

Verfasst: 02.05.2024 18:17
von Andi
@H. Brill: Ja, das wäre eine Möglichkeit gewesen. Und in der Tat, meine IDE war noch auf "reiner Text" eingestellt. Aber UTF-8 brachte (leider) nicht den Durchbruch.
Ich werde da mal im englischen Forum stöbern und ggf. die Frage posten.
Danke für deine Unterstützung.

Re: Emojis in PB und B4X

Verfasst: 02.05.2024 19:05
von STARGÅTE
Ich binge mal das Stichwort Bytereihenfolge ins Spiel.

Wenn der Text als UTF-8 übertragen wird, ist die Bytereihenfolge klar definiert.
Bei UTF-16 oder UTF-32 gibt es aber Big Endian und Little Endian.