Emojis in PB und B4X

Für allgemeine Fragen zur Programmierung mit PureBasic.
Andi
Beiträge: 79
Registriert: 27.05.2008 17:29
Wohnort: Berlin

Emojis in PB und B4X

Beitrag 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.
PB + B4X = greatest tools on earth
Win 10 | PB 5.72
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Emojis in PB und B4X

Beitrag 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.
PB 6.10
Andi
Beiträge: 79
Registriert: 27.05.2008 17:29
Wohnort: Berlin

Re: Emojis in PB und B4X

Beitrag 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.
PB + B4X = greatest tools on earth
Win 10 | PB 5.72
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Emojis in PB und B4X

Beitrag 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.
PB 6.10
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Emojis in PB und B4X

Beitrag 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.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Emojis in PB und B4X

Beitrag 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.
PB 6.10
Andi
Beiträge: 79
Registriert: 27.05.2008 17:29
Wohnort: Berlin

Re: Emojis in PB und B4X

Beitrag 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.
PB + B4X = greatest tools on earth
Win 10 | PB 5.72
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Emojis in PB und B4X

Beitrag 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.
PB 6.10
Andi
Beiträge: 79
Registriert: 27.05.2008 17:29
Wohnort: Berlin

Re: Emojis in PB und B4X

Beitrag 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.
PB + B4X = greatest tools on earth
Win 10 | PB 5.72
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Emojis in PB und B4X

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten