thomas: Typografischer Bindestrich (halbgeviert) in Email

Hallo

Habe diverse Strings die den etwas längeren Bindestrich benutzen z.b. "Eugen Mustermann – jetzt auf xxx". Dieser Text ist in einer MySQL Datenbank (utf8_general_ci) gespeichert und wird auch html-mässig prima ausgegeben. Nun muss dieser Text per Mail über PHP per mail verschickt werden. Leider wird dieser Bindestrich im Mail immer als ? angezeigt - es scheint so, dass dieses Zeichen beim utf8_decode verloren geht. Bez. utf8_decode kennt anscheinend nur iso-8859-1 und dort ist der lange Strich nicht enthalten.

Möchte nun diesen lange Strich vor dem utf8_decode durch einen einfachen Strich ersetzen. Habe es so versucht:

$text = str_replace("\xe2\x80\x94", "-", $text);
oder
$nwBetreff = str_replace("–", "-", $nwBetreff);

Leider ohne erfolgt.

Hat mir jemand einen Tipp was falsch ist?

Danke und Gruss
Thomas

  1. Hi!

    Leider wird dieser Bindestrich im Mail immer als ? angezeigt - es scheint so, dass dieses Zeichen beim utf8_decode verloren geht. Bez. utf8_decode kennt anscheinend nur iso-8859-1 und dort ist der lange Strich nicht enthalten.

    Und noch jede Menge andere Zeichen, die UTF-8 beziehungsweise Unicode kennt.

    Möchte nun diesen lange Strich vor dem utf8_decode durch einen einfachen Strich ersetzen. Habe es so versucht:
    $text = str_replace("\xe2\x80\x94", "-", $text);

    Erst mal nachschauen, was wirklich vorhanden ist.

    echo urlencode($text);

    urlencode() ist zwar nicht dafür gedacht, zeigt aber schön die Bytewerte aller Zeichen an und lässt lateinische Buchstaben und Ziffern übersichtlicherweise wie sie sind.

    Hat mir jemand einen Tipp was falsch ist?

    Warum sendest du die Mails nicht UTF-8-kodiert (mit entsprechendem Content-Type-Header)?

    Lo!

  2. hi,

    $text = str_replace("\xe2\x80\x94", "-", $text);
    Hat mir jemand einen Tipp was falsch ist?

    Die Bytes für den EN DASH sind E2 80 93. Suche nach hyphen, dash hier.

    Hotti