Es doch eigentlich genau was himitsu sagt - Es geht nicht um Bytes. Es geht um Zeichen. Und wie diese Zeichen auf dem Bildschirm (für einen Menschen) dargestellt werden ist nicht das gleiche.
Dieser nicht ganz erst gemeinte Comic zeigt das auch nochmal gut:
https://xkcd.com/1813/
Ich sehe das große Problem noch nicht ganz. Wenn jemand als Vorname "Jupp 😎" eingibt und aus diesem Eingabefeld maximal die ersten sechs Zeichen gespeichert werden muss er doch damit leben können wenn ein Programm dann später "Jupp �" anzeigt. Alternativ filtert man das halt einfach raus, sollte man mit Benutzereingaben eh immer machen:
Delphi-Quellcode:
uses System.Character;
var
newText: String;
finalText: String;
character: Char;
begin
newText := String.Empty;
for character in 'Hallo 😎'.Substring(0, 7) do
if(character.IsLetterOrDigit()) then
newText := newText + character;
Edit1.Text := newText;
end;