• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

zeichensätze verständnisproblem

philodance

Mitglied
im folgenden skript ist mb_convert_encoding notwendig, da sonst bei einer eingabe von speziellen zeichen (z.b. °§¬) nur carets mit fragezeichen erscheinen. ich versteh aber nicht, wieso ich konvertieren muss, da ich ja überall windows-1252 angeb.

PHP:
<?php
  header("Content-Type: text/html; charset=windows-1252");
  if($_POST[ava]) die('öäü€¬  &nbsp; &nbsp; '.mb_convert_encoding($_POST[ava],'windows-1252','utf-8'));
?>

<!doctype html>
<html lang="de" prefix="og: http://ogp.me/ns#">
  <head>
    <meta http-equiv='content-type' content='text/html;charset==windows-1252'>
    <script>
    function ajax(p,id) {
      var x=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');
      x.onreadystatechange=function() {if(x.readyState==4&&x.status==200&&id!==undefined) document.getElementById(id).innerHTML=x.responseText;}
      x.open('POST','?db',true);
      x.setRequestHeader('Content-type','application/x-www-form-urlencoded; charset=windows-1252');
      x.send(p);
    }
    </script>
  </head>
  <body>
    <div id=ooo></div><input type=text id=i13713 value='<?=$_POST[ava]?>'><input type=button onclick=ajax('ava='+(document.getElementById('i13713').value),'ooo')>
  </body>
</html>
 
Werbung:
Diese Schriftzeichen existieren eben nicht in windows-1252.

Das ganze Script kansst du dir aber sparen wenn du gleich utf-8 als charset angibst.

Das charset wird übrigens so angegeben:
HTML:
<meta charset="utf-8">
Ich kann das in deinem Code nirgendwo sehen.

Gruss
Elroy
 
Wenn man schon PHP verwendet kann und sollte man auch die HTTP-Header-Angabe zum Zeichensatz beeinflussen. Also z.B. so:

PHP:
header("Content-Type: text/html; charset=utf-8");

Die Angabe per HTML-Code wird durch diesen Wert überschrieben. Wenn der Server bereits einen Zeichensatz im HTTP-Header ausgibt, würde der HTML-Code gar nicht wirken.

Bitte beachten, dass man zusammen mit dieser Angabe auch alle Dateien, die am Web beteiligt sind, in diesem Zeichensatz speichern sollte. Wie das geht ist abhängig vom von dir verwendeten Editor unterschiedlich.
 
Werbung:
offenbar wird meine frage nicht ganz verstanden... ich spichere die php-datei mit windows-1252.
mit header übergeb ich ebenfalls windows-1252; eine html-angabe des content-types ist somit obsolet.
wieso muss ich denn überhaupt irgendwo von utf-8 konvertieren??? in meinem ganzen projekt schreib ich ja nirgends was von utf-8...
wieso funktionieren die beiden varianten nicht:
mb_convert_encoding($_POST[ava],'windows-1252','UCS-2LE');
mb_convert_encoding($_POST[ava],'windows-1252');
 
Das ganze Script kansst du dir aber sparen wenn du gleich utf-8 als charset angibst.
Wenn ich die PHP-Datei mit dem Editor ConTEXT speichere (und in den Einstellungen Unicode wähl) und in meinem Skript überall windows-1252 durch utf-8 ersetze, erhalte ich nur noch carets mit fragezeichen. dann geht gar nichts mehr ;-(
 
Wenn ich die PHP-Datei mit dem Editor ConTEXT speichere (und in den Einstellungen Unicode wähl) und in meinem Skript überall windows-1252 durch utf-8 ersetze, erhalte ich nur noch carets mit fragezeichen. dann geht gar nichts mehr ;-(

Warum speicherst du die Datei als Unicode, gibt es dafür einen besonderen Grund?

Warum speicherst du die Datei nicht gleich als utf-8.

Gruss
Elroy
 
Werbung:
Zurück
Oben