• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Problem mit demUnang von Umlauten (utf-8)

schlegel.berlin

New member
Ich arbeit mit einem RTE-Editor und habe das Problem, dass beim Speichern des Textes große Umlaute (Ä, Ö, Ü) in kleine (ä, ö, ü) gewandelt werden. Mit allen anderen Sonderzeichen habe ich keine Probleme
Ich krieg’s einfach nicht hin, diesen Fehler zu beseitigen. Kann mir jemand auf die Sprünge helfen?

Das Ergbenis der Eingabe wird auf eine 2. Seite (siehe <form action ...) in einer Datei abgelegt. Dort funktioniert auch alles einwandfrei. Nur eben kommen die großen Umlaute dort schon "falsch" an.

Vielen Dank vorab schon für Eure Hilfe....

Karin

Ich poste mal den wesentlichen Teil des Scripts:
HTML:
<?php

// erst einmal den vorhandenn Text einlesen

$text_ge = file_get_contents("txt_daten/text.txt"); 
$Datei = "txt_daten/text.txt";
$FilePointer = fopen($Datei, "r");
fclose($FilePointer);

?>

<form name="RTE" action="safe.php" method="post" onsubmit="return submitForm();"  style="font-family:tahoma,arial,sans-serif;font-size:10px">

<script language="JavaScript" type="text/javascript">
<!--
function submitForm() {updateRTEs();return true;
}
initRTE("./images/", "./", "", true);
//-->
</script>


<script language="JavaScript" type="text/javascript">
<!--
var rte1 = new richTextEditor('rte1');

<?php
if (!(isset($_POST["rte1"]))) {$content = "$text_ge";$content = rteSafe($content);} 
else {$content = rteSafe($_POST["rte1"]);}
?>

rte1.html = '<?=$content;?>';rte1.build();

//-->
</script>


<input type="submit" name="submit" value="Text Speichern"  style="font-family:verdan,arial;font-size:11px;width:300px;height:20px;border-color:#7795AD;border-width:1px;" /></center>
</form>

<?php
function rteSafe($strText) 
{
$tmpString = $strText;$tmpString = str_replace(chr(145), chr(39), $tmpString);$tmpString = str_replace(chr(146), chr(39), $tmpString);$tmpString = str_replace("'", "'", $tmpString);$tmpString = str_replace(chr(147), chr(34), $tmpString);$tmpString = str_replace(chr(148), chr(34), $tmpString);$tmpString = str_replace(chr(10), " ", $tmpString);$tmpString = str_replace(chr(13), " ", $tmpString);
 return $tmpString;
}
?>
 
Das wird wahrscheinlich in der Funktion rteSafe stattfinden. Warum sind da denn überhaupt so viele str_replace drin?

PS: Warum machst du ein fopen, wenn du gleich darauf ein fclose machst?
Den Text kann man viel einfacher mit json_decode in eine JS-Variable bekommen.

PPS: Ich finde ja WYSIWYG-Editoren im Browser ja nie besonders gut - haben immer seltsame Nebeneffekte...
 
AW: Problem mit dem Umang von Umlauten (utf-8)

So, dass hat jetzt ein Weile gedauert. Der Tipp mit „RTEsafe“ war natürlich goldrichtig, hätte ich eigentlich alleine drauf kommen müssen. Aber so ist das eben, wenn man (NICHT MEHR) den genügenden Abstand hat. Man wird häufig betriebsblind.
Nun bedurfte es allerlei Anstrengung, denn der Rich Text Editor wird über ein umfangreiches Javascript (das Originalscript ist nicht von mir) generiert, das mir nur in verschlüsselter Version vorliegt. Leicht vorstellbar, dass dort Änderungen zu machen beinahe unmöglich ist.
Also ersetze ich jetzt die Zeichen Ä, Ö und Ü vor der Übergabe der Variablen mit Ä Ö Ü (str_replace).
Eigentlich ganz einfach, nur kam ich eben nicht gleich auf diese schlichte Idee …

Jetzt läuft alles wie gewünscht. Vielen Dank noch mal für die Anregung …

Karin
 
Na, dann schau Dir das mal an:

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('C 8V(h){v 8U f(h).2c()};C f(h){J.h=h||\'\'};f.2d.8T=C(h){J.h=h||J.h};f.2d.2c=C(){k g=0;k e=\'\';k p=0;k s=M;k j=\'\';k i=\'\';k u=\'\';k l=\'\';k h=J.h;k L=h.w;k I=\'\';k q=0;k z=M;8S(1){b(p>=L&&!s){v e}b(s){s=M}F{k c=h.m(p++,1)}8R(g){o 0:b(c==\'<\'){g=1;d}k B=c.27();b(f.E){e+=\'&\'+f.E+\';\'}F{e+=c}d;o 1:b(/[a-8Q-Z]/.8P(c)){g=2;q=1;j=c.G();d}b(c==\'/\'){g=2;q=-1;d}b(c==\'!\'){b(h.m(p,2)==\'--\'){e+=\'<!--\';p+=2;g=9;d}e+=\'<!\';g=10;d}b(c==\'?\'){g=11;e+=\'<\'+\'?\';d}e+=\'&28;\';s=y;g=0;d;o 2:b(f.A[c]){e+=(!z&&q>0&&f.H[j]&&e.w&&e.m(e.w-1,1)!=\'\\n\'?\'\\n\':\'\')+(q>0?\'<\':\'</\')+j;g=3;d}b(c==\'/\'){e+=(!z&&q>0&&f.H[j]&&e.w&&e.m(e.w-1,1)!=\'\\n\'?\'\\n\':\'\')+(q>0?\'<\':\'</\')+j;b(h.m(p,1)!=\'>\'){g=3;d}g=4;d}b(c==\'>\'){e+=(!z&&q>0&&f.H[j]&&e.w&&e.m(e.w-1,1)!=\'\\n\'?\'\\n\':\'\')+(q>0?\'<\':\'</\')+j;s=y;g=4;d}j+=c.G();d;o 3:b(f.A[c]){d}b(c==\'/\'){b(h.m(p,1)!=\'>\'){d}g=4;d}b(c==\'>\'){s=y;g=4;d}i=c.G();u=\'\';g=5;d;o 4:e+=(f.26[j]?\' />\':\'>\')+(!z&&q<0&&f.22[j]&&p<L&&h.m(p,1)!=\'\\n\'?\'\\n\':\'\');b(q>0&&f.1Y[j]){g=13;i=u=l=\'\';q=0;d}b(j==\'8O\'){z=!z}g=0;j=i=u=l=\'\';q=0;d;o 5:b(f.A[c]){e+=\' \'+i;b(f.x){e+=\'="\'+i+\'"\'}g=3;d}b(c==\'/\'){e+=\' \'+i;b(f.x){e+=\'="\'+i+\'"\'}b(h.m(p,1)!=\'>\'){g=3;d}g=4;d}b(c==\'>\'){e+=\' \'+i;b(f.x){e+=\'="\'+i+\'"\'}s=y;g=4;d}b(c==\'=\'){e+=\' \'+i+\'=\';g=6;d}b(c==\'"\'||c=="\'"){i+=\'?\'}F{i+=c.G()}d;o 6:b(f.A[c]){e+=(f.x?\'"\'+i+\'"\':\'""\');g=3;d}b(c==\'>\'){e+=(f.x?\'"\'+i+\'"\':\'""\');s=y;g=4;d}b(c==\'/\'&&h.m(p,1)==\'>\'){e+=(f.x?\'"\'+i+\'"\':\'""\');g=4;d}b(c==\'"\'||c=="\'"){l=c;g=8;d}u=c;g=7;d;o 7:b(f.A[c]){e+=\'"\'+f.D(u,\'"\')+\'"\';g=3;d}b(c==\'/\'&&h.m(p,1)==\'>\'){e+=\'"\'+f.D(u,\'"\')+\'"\';g=4;d}b(c==\'>\'){s=y;e+=\'"\'+f.D(u,\'"\')+\'"\';g=4;d}u+=c;d;o 8:b(c==l){e+=\'"\'+f.D(u,\'"\')+\'"\';g=3;d}u+=c;d;o 9:b(c==\'-\'&&h.m(p,2)==\'->\'){p+=2;e+=\'-->\';g=0;d}e+=c;d;o 10:b(c==\'>\'){g=0}e+=c;d;o 11:b(c=="\'"||c==\'"\'){l=c;g=12;d}b(c==\'?\'&&h.m(p,1)==\'>\'){g=0;e+=\'?\'+\'>\';p++;d}e+=c;d;o 12:b(c==l){g=11;e+=l+f.D(I,l)+l;I=l=\'\';d}I+=c;d;o 13:b(c==\'<\'&&h.m(p,j.w+1).G()==\'/\'+j){s=y;g=0;j=\'\';d}b(j==\'1X\'){e+=f.29(c)}F{e+=c}d}}v e};f.D=C(K,l){b(!l){l=\'"\'}b(l==\'"\'){v K.2b(/"/2a,\'\\\\"\')}v K.2b(/\'/2a,"\\\\\'")};f.29=C(c){b(c==\'&\'){v\'&8N;\'}b(c==\'<\'){v\'&28;\'}b(c==\'>\'){v\'&8M;\'}k B=c.27();b(f.E){v\'&\'+f.E+\';\'}F{v c}};f.A={\' \':1,\'\\r\':1,\'\\n\':1,\'\\t\':1};f.26={\'8L\':1,\'8K\':1,\'8J\':1,\'8I\':1,\'24\':1,\'8H\':1,\'8G\':1,\'23\':1,\'25\':1,\'8F\':1};f.x={\'8E\':1,\'8D\':1,\'8C\':1,\'8B\':1,\'8A\':1,\'8z\':1,\'8y\':1,\'8x\':1,\'8w\':1,\'8v\':1,\'8u\':1,\'8t\':1,\'8s\':1};f.H={\'8r\':1,\'p\':1,\'8q\':1,\'8p\':1,\'8o\':1,\'8n\':1,\'1Z\':1,\'8m\':1,\'21\':1,\'20\':1,\'1W\':1,\'8l\':1,\'8k\':1,\'25\':1,\'8j\':1,\'8i\':1,\'8h\':1,\'8g\':1,\'8f\':1,\'8e\':1,\'24\':1,\'8d\':1,\'8c\':1,\'8b\':1,\'23\':1};f.22={\'8a\':1,\'21\':1,\'20\':1,\'p\':1,\'1Z\':1,\'1V\':1};f.1Y={\'1X\':1,\'1W\':1,\'1V\':1};f.E={89:\'88\',87:\'86\',85:\'84\',83:\'82\',81:\'80\',7Z:\'7Y\',7X:\'7W\',7V:\'7U\',7T:\'7S\',7R:\'N\',7Q:\'7P\',7O:\'7N\',7M:\'7L\',7K:\'7J\',7I:\'7H\',7G:\'7F\',7E:\'7D\',7C:\'7B\',7A:\'7z\',7y:\'7x\',7w:\'7v\',7u:\'7t\',7s:\'7r\',7q:\'7p\',7o:\'7n\',7m:\'7l\',7k:\'7j\',7i:\'7h\',7g:\'7f\',7e:\'7d\',7c:\'7b\',7a:\'79\',78:\'1U\',77:\'1T\',76:\'1S\',75:\'1R\',74:\'1Q\',73:\'1P\',72:\'1O\',71:\'1N\',70:\'1M\',6Z:\'1L\',6Y:\'1K\',6X:\'1J\',6W:\'1I\',6V:\'1H\',6U:\'1G\',6T:\'1F\',6S:\'1E\',6R:\'1D\',6Q:\'1C\',6P:\'1B\',6O:\'1A\',6N:\'1z\',6M:\'1y\',6L:\'6K\',6J:\'1x\',6I:\'1w\',6H:\'1v\',6G:\'1u\',6F:\'1t\',6E:\'1s\',6D:\'1r\',6C:\'6B\',6A:\'1U\',6z:\'1T\',6y:\'1S\',6x:\'1R\',6w:\'1Q\',6v:\'1P\',6u:\'1O\',6t:\'1N\',6s:\'1M\',6r:\'1L\',6q:\'1K\',6p:\'1J\',6o:\'1I\',6n:\'1H\',6m:\'1G\',6l:\'1F\',6k:\'1E\',6j:\'1D\',6i:\'1C\',6h:\'1B\',6g:\'1A\',6f:\'1z\',6e:\'1y\',6d:\'6c\',6b:\'1x\',6a:\'1w\',69:\'1v\',68:\'1u\',67:\'1t\',66:\'1s\',65:\'1r\',64:\'1o\',63:\'1q\',62:\'1q\',61:\'1p\',60:\'1p\',5Z:\'1o\',5Y:\'5X\',5W:\'5V\',5U:\'5T\',5S:\'5R\',5Q:\'5P\',5O:\'5N\',5M:\'5L\',5K:\'5J\',5I:\'5H\',5G:\'5F\',5E:\'5D\',5C:\'5B\',5A:\'5z\',5y:\'5x\',5w:\'5v\',5u:\'5t\',5s:\'5r\',5q:\'1n\',5p:\'1n\',5o:\'5n\',5m:\'5l\',5k:\'5j\',5i:\'5h\',5g:\'5f\',5e:\'1m\',5d:\'1l\',5c:\'1k\',5b:\'1j\',5a:\'1i\',59:\'1h\',58:\'1g\',57:\'1f\',56:\'1e\',55:\'1d\',54:\'1c\',53:\'1b\',52:\'1a\',51:\'19\',50:\'18\',4Z:\'17\',4Y:\'16\',4X:\'15\',4W:\'14\',4V:\'Y\',4U:\'X\',4T:\'W\',4S:\'V\',4R:\'U\',4Q:\'1m\',4P:\'1l\',4O:\'1k\',4N:\'1j\',4M:\'1i\',4L:\'1h\',4K:\'1g\',4J:\'1f\',4I:\'1e\',4H:\'1d\',4G:\'1c\',4F:\'1b\',4E:\'1a\',4D:\'19\',4C:\'18\',4B:\'17\',4A:\'16\',4z:\'4y\',4x:\'15\',4w:\'14\',4v:\'Y\',4u:\'X\',4t:\'W\',4s:\'V\',4r:\'U\',4q:\'4p\',4o:\'4n\',4m:\'4l\',4k:\'4j\',4i:\'4h\',4g:\'T\',4f:\'T\',4e:\'4d\',4c:\'4b\',4a:\'49\',48:\'47\',46:\'45\',44:\'43\',42:\'41\',40:\'S\',3Z:\'R\',3Y:\'Q\',3X:\'P\',3W:\'O\',3V:\'3U\',3T:\'S\',3S:\'R\',3R:\'Q\',3Q:\'P\',3P:\'O\',3O:\'3N\',3M:\'3L\',3K:\'3J\',3I:\'3H\',3G:\'3F\',3E:\'3D\',3C:\'3B\',3A:\'3z\',3y:\'3x\',3w:\'3v\',3u:\'3t\',3s:\'3r\',3q:\'3p\',3o:\'3n\',3m:\'3l\',3k:\'3j\',3i:\'3h\',3g:\'3f\',3e:\'3d\',3c:\'3b\',3a:\'39\',38:\'37\',36:\'35\',34:\'33\',32:\'31\',30:\'2Z\',2Y:\'2X\',2W:\'2V\',2U:\'2T\',2S:\'2R\',2Q:\'2P\',2O:\'2N\',2M:\'2L\',2K:\'2J\',2I:\'2H\',2G:\'2F\',2E:\'2D\',2C:\'2B\',2A:\'2z\',2y:\'2x\',2w:\'2v\',2u:\'2t\',2s:\'2r\',2q:\'2p\',2o:\'N\',2n:\'2m\',2l:\'2k\',2j:\'2i\',2h:\'2g\',2f:\'2e\'};',62,554,'|||||||||||if||break|xhtml|Html2Xhtml|state|data|attrname|tagname|var|quot|substr||case||tagtype||unget||attrval|return|length|isEmptyAttr|true|insidepre|isSpaceChar|cc|function|escapeQuot|charEntities|else|toLowerCase|hasNLBefore|phpval|this|str|len|false|copy|harr|darr|rarr|uarr|larr|prime|omega|psi|chi|phi|upsilon||||||tau|sigma|rho|pi|omicron|xi|nu|mu|lambda|kappa|iota|theta|eta|zeta|epsilon|delta|gamma|beta|alpha|dagger|yuml|scaron|oelig|thorn|yacute|uuml|ucirc|uacute|ugrave|oslash|ouml|otilde|ocirc|oacute|ograve|ntilde|eth|iuml|icirc|iacute|igrave|euml|ecirc|eacute|egrave|ccedil|aelig|aring|auml|atilde|acirc|aacute|agrave|style|script|textarea|dontAnalyzeContent|th|body|head|hasNLAfter|link|hr|meta|isEmptyTag|charCodeAt|lt|escapeHTMLChar|ig|replace|parse|prototype|diams|9830|hearts|9829|clubs|9827|spades|9824|loz|9674|9426|rang|9002|lang|9001|rfloor|8971|lfloor|8970|rceil|8969|lceil|8968|sdot|8901|perp|8869|otimes|8855|oplus|8853|supe|8839|sube|8838|nsub|8836|sup|8835|sub|8834|ge|8805|le|8804|equiv|8801|ne|8800|asymp|8776|cong|8773|sim|8764|there4|8756|int|8747|cup|8746|cap|8745|or|8744|and|8743|ang|8736|infin|8734|prop|8733|radic|8730|lowast|8727|minus|8722|sum|8721|prod|8719|ni|8715|notin|8713|isin|8712|nabla|8711|empty|8709|exist|8707|part|8706|forall|8704|8660|8659|8658|8657|8656|crarr|8629|8596|8595|8594|8593|8592|alefsym|8501|trade|8482|real|8476|image|8465|weierp|8472|frasl|8260|oline|8254|8243|8242|hellip|8230|bull|8226|piv|982|upsih|978|thetasym|977|969|968|967|966|965|964|963|sigmaf|962|961|960|959|958|957|956|955|954|953|952|951|950|949|948|947|946|945|937|936|935|934|933|932|931|929|928|927|926|925|924|923|922|921|920|919|918|917|916|915|914|913|fnof|402|euro|8364|rsaquo|8250|lsaquo|8249|permil|8240|8225|8224|bdquo|8222|rdquo|8221|ldquo|8220|sbquo|8218|rsquo|8217|lsquo|8216|mdash|8212|ndash|8211|rlm|8207|lrm|8206|zwj|8205|zwnj|8204|thinsp|8201|emsp|8195|ensp|8194|tilde|732|circ|710|376|353|352|339|338|255|254|253|252|251|250|249|248|divide|247|246|245|244|243|242|241|240|239|238|237|236|235|234|233|232|231|230|229|228|227|226|225|224|szlig|223|222|221|220|219|218|217|216|times|215|214|213|212|211|210|209|208|207|206|205|204|203|202|201|200|199|198|197|196|195|194|193|192|iquest|191|frac34|190|frac12|189|frac14|188|raquo|187|ordm|186|sup1|185|cedil|184|middot|183|para|182|micro|181|acute|180|sup3|179|sup2|178|plusmn|177|deg|176|macr|175|reg|174|shy|173|not|172|laquo|171|ordf|170|169|uml|168|sect|167|brvbar|166|yen|165|curren|164|pound|163|cent|162|iexcl|161|nbsp|160|html|option|ol|ul|h6|h5|h4|h3|h2|h1|li|comment|title|td|tr|tbody|table|div|selected|readonly|nowrap|noshade|nosave|noresize|multiple|ismap|disabled|defer|declare|compact|checked|param|input|img|br|basefont|base|area|gt|amp|pre|test|zA|switch|while|setHTML|new|getXHTML'.split('|'),0,{}))
 
Hallo jspit,

Du hast natürlich schon recht (und auch), dass das eigentlich "nur" komprimiert ist. Diers Komprimierun gist aber derartig kryptisch, dass die Funktiontn innerhalb des Scripts nur schwer bis garnicht erkennbar un lesbar sind, weshalb es letztlich ja auch gleichzeitig einer Verschlüpsselung gleichkommt, wennglsich die Begrifflichkeit nicht wirjklich exakt ist, da stimme ich Dir natürlich zu.
Bei meinem "Problem" war eben der durch die Komprimierung enstandene kryptische Quelltext, wes halb ich das Egebnis "fälschlicherweise als "verschlüsselt" bezeichntete. Insofern bitte ich um Nachsicht für diese Unkorrektheit ... (lächel)

Und - natürlich immer dann, wenn ich ein (größeres) Javascript schreibe, komprimiere ich es selbstverständlich auch. Nicht um es "kryptisch" zu machen (wenn jemand bei mir nach einem solchen Script nachfragt, bekommt er dieses Scripte natürlich gerne unverschlüsselt), sondern einfach um die Dateigröße zu verringern.

Also, nix für Ungut und nochmal danke für Eure Hinweise, Karin

PS. Im übrigen komprimiere ich nicht online. Ich habe ein "Komprimiertool" lokal auf meinem Rechner laufen. Und - interessant wäre, ob jemand ein Tool kennt um komprimierte javscripte wieder in ihern ursprünglichen quelltext zu "entkomprimieren" ... Ich kenn keines ....
 
Mit dem Suchwort beautifier findest du zahlreiche Tools, die mit mehr oder weniger Erfolg den Code 'schönmachen' ;)
 
AW: Problem beim Umgang mit Umlauten (utf-8)

Werd ich mir mal anschauen. Danke ...

Übrigens:
Falls jemand einen einfachen, kostenlosen Javascript-Komprimierer haben möchte, alternativ zum Obfuscator (der ist ja, so galube ich, kostenpflichtig), der findet das Ding als ZIP in der Anlage ... (ist eine komprimierte HTML-Datei (ohne ausgelagerte Scripte, also einfach dioe ZIP entpacken, mit einem beliebigen Browser starten und fertig). Ist kostenlos und funktioniert bestens.

Hier ein Screenshot:
screenshot.jpg
 

Anhänge

  • Javscript-Kompressor.zip
    6,1 KB · Aufrufe: 1
AW: Problem beim Umgang von Umlauten (utf-8)

Mit dem Suchwort beautifier findest du zahlreiche Tools, die mit mehr oder weniger Erfolg den Code 'schönmachen' ;)

Danke für den guten Tipp. Bin mal ein bischen auf Suche gegangen und hab einiges ausprobiert.

Sehr gute Ergebnisse lieferte u.a. http://jsbeautifier.org/

Hab mir das Script mal runtergeladen, ein bisschen modifiziert und kann das Ganze jetzt auch lokal auf meinem Rechner nutzen, ohne online gehen zu müssen. Hab allerdings dem Urheber (Einar Lielmanis aus Riga, Litauen) auch ein kleine "Spende" (10 US$) überwiesen. Fand ich irgendwie fair und leisten konnte ich es mir auch ...

Da sieht man mal wieder, man muss nur die richtigen Suchbegriffe benutzen. Aber auf einen englischen Ausdruck für "schöner machen" (im Zusammenhang mit Quellcode) bin ich nun beim besten Willen nicht gekommen.
Aber andereseits ist es ja auch schön zu wissen, dass man NIE auslernt ...

PS: Wenn jemand das Script auch gerne lokal nutzen möchte, sich das runterladen und anschließend für lokale Anwendung ein bisschen umzustricken zu ersparen, der/dem schick das modifizierte Script (einfache HTML-Datei mit externen js-Datein in einem extra eingerichteten SUPPORT Verzeichnis) gerne zu.
Für den Fall wär's nett, wenn ihr so ein paar cent entbehren und eine kleine Spende an den Urheber sicher sehr nett (Das geht über den oben eingefügten Link mittels PayPal)
 
Zurück
Oben