echo $begrüßung;
htmlspecialchars hat dieses Problem nicht - aber auch nur deshalb, weil es maximal die Zeichen <, >, " und ' bearbeitet - und die werden auch in UTF-8 alle mit nur einem Byte dargestellt.
Die Byte-Werte dieser Zeichen kommen in den Kodierungen ISO-8859-xx und UTF-8 nur einmal vor. Deshalb kann es da keine Missverständnisse geben. Aber einige im asiatischen Raum gebräuchliche Kodierungen verwenden diese Byte-Werte ein zweites Mal. Da ist es wichtig, den charset-Parameter richtig anzugeben.
echo "$verabschiedung $name";