nick: ASCII und HTML und MySQL ;-)

Hallo,

folgendes Problem. Ich möchte verfügbare Einheiten in einer Eingabemaske zur verfügung stellen und beim editieren des Datensatzes  die aktuelle Einheit per default ausgewählt haben.

Leider funktioniert das Vergleichen der Werte aber nur bei einfachen Strings. Bei m² z.B. funktioniert es nicht.

Ausgeben (fürs Select) gebe ich die m² als "m²"
In der Datenbank (MySQL, MyISAM) landen die m² schon als "m²".
Ausgegeben (Sourcecode) werden die m² hingegen als "m²".

Weiß jemand wie ich das umgehen kann ohne ID's pro Einheit zu vergeben?

Hier der Source der Funktion:

function drop_einheiten($select,$aktuell){
 $array[]="[ Keine ]";
 $array[]="m²";
 $array[]="lfm";
 $array[]="Stück";
 $array[]="Std";

$ret ="<select name="".$select."">\n";

for($i=0;$i<sizeof($array);$i++){
  $ret.="<option value="".$array[$i].""";
   if($aktuell==$array[$i]){ $ret.=" selected="selected" "; }
  $ret.=">".$array[$i]." | ".$aktuell."</option>";
 }

$ret.= "</select>\n";

return $ret;
}

Grüße,
nick

  1. echo $begrüßung;

    Leider funktioniert das Vergleichen der Werte aber nur bei einfachen Strings. Bei m² z.B. funktioniert es nicht.

    Um unterschiedliche Kodierungen oder Ersatzdarstellungen zu vergleichen musst du erst alle beteiligen Werte auf ein gleiches System konvertieren.

    Ausgeben (fürs Select) gebe ich die m² als "m&sup2;"

    Das ist ein HTML-Entity, das ist nur zur Ausgabe im HTML-Code zu gebrauchen und ansonsten zu nichts.

    In der Datenbank (MySQL, MyISAM) landen die m² schon als "m²".

    Das ist ein m² in UTF-8-Kodierung, jedoch als ISO-8859-1 interpretiert.

    Ausgegeben (Sourcecode) werden die m² hingegen als "m²".

    Der Browser hat aus einer Bytefolge und einer passenden Kodierungsangabe die richtigen Zeichen interpretiert.

    Weiß jemand wie ich das umgehen kann ohne ID's pro Einheit zu vergeben?

    Verwende eine Kodierung, mit der alle beteiligten Systeme umgehen können und die alle benötigten Zeichen enthält. Verzichte auf kontextspezifische Ersatzdarstellungen, wie HTML-Entities. Achte außerdem darauf, dass jedes System Bescheid weiß, in welcher Kodierung die übergebenen Daten vorliegen.

    echo "$verabschiedung $name";

    1. $name="dedlfix";

      echo "Hallo ".$name; // ;-)

      Vielen Dank für die Erläuterung.

      Ich verwende nun in allen Systemen UTF-8 und es funktioniert nun.

      Was man noch beachten muss ist das man die PHP Datei selbst auch in UTF-8 abspeichert. Dreamweaver macht das z.B nicht von sich aus.