Opa Horst: Umlaute ändern sich zurück!??

Beitrag lesen

Hallo!

Ich habe ein - wie ich finde - verrücktes Problem. Ich habe eine utf-8 kodierte Seite, auf der ich alle Umlaute geändert habe - ä=ä etc.

»»

Ähnliches trieb mich schon zur Verzweiflung. Um den Zeichenraum oberhalb
der #128 zu kontrollieren verfasste ich folgende PHP-Funktion:

function lesen($wort)  
{  
 $soll=Array(			  				  				  			  
'€','','‚','ƒ','„','…','†','‡','ˆ','‰','Š',  
'‹','Œ','','Ž','','','‘','’','“','”','•',  
'–','—','˜','™','š','›','œ','','ž','Ÿ',' ',  
'¡','¢','£','¤','¥','¦','§','¨','©','ª','«',  
'¬','­','®','¯','°','±','²','³','´','µ','¶',  
'·','¸','¹','º','»','¼','½','¾','¿','À',  
'Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê',  
'Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô',  
'Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ',  
'ß','à','á','â','ã','ä','å','æ','ç','è',  
'é','ê','ë','ì','í','î','ï','ð','ñ','ò',  
'ó','ô','õ','ö','÷','ø','ù','ú','û','ü',  
'ý','þ','ÿ');  
 $erg = "$wort";  
$serch = array("amp;",chr(92)."r",chr(92)."n",chr(10),chr(13));  
  $erg = str_replace ($serch,"",$erg);  
  $erg = str_replace ("     "," ",$erg);  
  $erg = str_replace ("    "," ",$erg);  
  $erg = str_replace ("   "," ",$erg);  
  $erg = str_replace ("  "," ",$erg);  
  $erx = "";  
  for($i=0;$i<strlen($erg);$i++){  
  	$x=ord($erg[$i]);  
	if($erg[$i]=='&#8364;')$erx.='&euro;';  
  	if(($x>31)and($x<128))$erx.=$erg[$i];  
	if($x>127)$erx.=$soll[$x-128];}  
  return($erx);  
}

Und mit dem PHP-Aufruf: ~~~php

$neuerText = lesen(htmlentities($alterText));

Komme ich auf die sichere Seite.  
In den Zeilen:~~~php
  
$serch = array("amp;",chr(92)."r",chr(92)."n",chr(10),chr(13));  
  $erg = str_replace ($serch,"",$erg);  
  $erg = str_replace ("     "," ",$erg);  
  $erg = str_replace ("    "," ",$erg);  
  $erg = str_replace ("   "," ",$erg);  
  $erg = str_replace ("  "," ",$erg);

werden [amp;], [TAB], [CR], [LF] und Leerzeichenketten vernichtet. Das muß man für sich anpassen.
Apropos htmlentities()
oder was ich sonst nicht verstanden habe, hat &uuml;
in:&amp;uuml; verwandelt!

Und hier das analoge für Formularfelder in javascript:

  
function umlaute(wort)  
{  
soll=new Array(			  				  				  			  
'&#x80;','&#x81;','&#x82;','&#x83;','&#x84;','&#x85;','&#x86;','&#x87;','&#x88;','&#x89;','&#x8A;',  
'&#x8B;','&#x8C;','&#x8D;','&#x8E;','&#x8F;','&#x90;','&#x91;','&#x92;','&#x93;','&#x94;','&#x95;',  
'&#x96;','&#x97;','&#x98;','&#x99;','&#x9A;','&#x9B;','&#x9C;','&#x9D;','&#x9E;','&#x9F;','&nbsp;',  
'&iexcl;','&cent;','&pound;','&curren;','&yen;','&brvbar;','&sect;','&uml;','&copy;','&ordf;','&laquo;',  
'&not;','&shy;','&reg;','&macr;','&deg;','&plusmn;','&sup2;','&sup3;','&acute;','&micro;','&para;',  
'&middot;','&cedil;','&sup1;','&ordm;','&raquo;','&frac14;','&frac12;','&frac34;','&iquest;','&Agrave;',  
'&Aacute;','&Acirc;','&Atilde;','&Auml;','&Aring;','&AElig;','&Ccedil;','&Egrave;','&Eacute;','&Ecirc;',  
'&Euml;','&Igrave;','&Iacute;','&Icirc;','&Iuml;','&ETH;','&Ntilde;','&Ograve;','&Oacute;','&Ocirc;',  
'&Otilde;','&Ouml;','&times;','&Oslash;','&Ugrave;','&Uacute;','&Ucirc;','&Uuml;','&Yacute;','&THORN;',  
'&szlig;','&agrave;','&aacute;','&acirc;','&atilde;','&auml;','&aring;','&aelig;','&ccedil;','&egrave;',  
'&eacute;','&ecirc;','&euml;','&igrave;','&iacute;','&icirc;','&iuml;','&eth;','&ntilde;','&ograve;',  
'&oacute;','&ocirc;','&otilde;','&ouml;','&divide;','&oslash;','&ugrave;','&uacute;','&ucirc;','&uuml;',  
'&yacute;','&thorn;','&yuml;');  
  
  var erg = "";  
  for(var i = 0; i < wort.length; i++)  
    {  
	 z = true;  
	 ch= wort.charAt(i);  
	 x = wort.charCodeAt(i);  
	 xy="&#"+x+";";  
	 if((x>31)&&(x<128))erg+=ch;  
	 else if((x>127)&&(x<256))erg +=soll[x-128];  
			else erg+=xy;  
	}  
  return(erg);  
}

P.S. auf meiner Homepage:blitzauge.com
gibt es eine, noch versteckte Hilfe unter:Fremde Zeichensätze um nach der Beschreibung dafür zu suchen benutzt die Volltextsuche nach "fremde zeichen" auf blitzauge.com

hoffetlich klappt's
Opa Horst