2012-04-03 10 views
0

i mit JavaScripts strtolower in Schwierigkeiten leiten()Javascript strtolower(), uft8 und (Deutsch) Sonderzeichen

var s = 'tür'; 
alert(s); 
alert(s.strToLower()); 

sollte in der gleichen Ausgabe führen. aber der Ausgang ist anders:

1: tür 
2: tã¼r 

irgendwelche Vorschläge, wie die uft8-special richtig behandeln, wenn mit strtolower()?

Martin

+3

JavaScript hat keine 'strToLower'-Funktion. PHP tut, und eine schnelle Suche zeigt, dass mindestens eine Person es aus irgendeinem Grund in JavaScript portiert hat, aber JavaScript selbst hat keins. Die JavaScript-Funktion 'toLowerCase', [scheint nicht das von Ihnen erwähnte Verhalten aufzuweisen] (http://jsbin.com/epefab) in Chrome, Firefox oder Opera unter Linux oder unter IE9 oder Safari unter Windows 7. –

+0

Ihre Seite ist als utf8 codiert, aber Ihr Server sagt fälschlicherweise ISO-8859-1. Fixiere deine Header. – georg

+0

Als zu lokalisiert markiert - da JavaScript diese Funktion nicht besitzt und Sie auf Kommentare nicht geantwortet haben, ist es unmöglich für jeden zu sagen, was hier vor sich geht. –

Antwort

3

JavaScript native .toLowerCase() Methode behandelt UTF-8 ganz gut:

alert("tür".toLowerCase()); 

Ihre Seite Codierung benötigt, um UTF-8 mit einem Header oder meta -tag eingestellt werden.

+0

bist du das probiert? Warnung ("Ibranice, IRMAK" .toLowerCase()); --JS's native unterstützt utf-8 nicht vollständig –

+1

Hängt vom Browser & Betriebssystem ab, aber Ihr Beispiel funktioniert wie beabsichtigt: "Die meisten Unicode-Software [...] sind speziell für Türkisch eingerichtet, sie schließen I auf i und Großbuchstaben ein Ich zu I. So ändert die Großschreibung, dann die Kleinschreibung oder umgekehrt die Buchstaben. " [Quelle] (http: //en.wikipedia.org/wiki/Punktiert \ _und \ _dotless \ _I) – RikkusRukkus

0

Sie haben zwei eingebaute Funktionen in Kleinbuchstaben zu konvertieren: .toLowerCase() und .toLocaleLowerCase(). Beides sollte mit dem von Ihnen bereitgestellten Beispiel gut funktionieren, aber Sie müssen sicherstellen, dass Sie Ihren Quellcode als UTF-8 gespeichert haben. Die genaue Vorgehensweise hängt stark von Ihrer IDE oder Ihrem Editor ab.

Außerdem wird es nicht schaden, wenn Ihr Webserver den Zeichensatz an Content-Type-Header anfügt.

0

Sicherstellen, dass die Datei, die Sie mit arbeiten in "UTF-8 ohne BOM" (Option in Notepad ++) codiert wird, und fügen Sie <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> innerhalb <head>

Ich habe versucht, und arbeitet.

0

Ihr Code macht keinen Sinn. Wenn Sie einer Zeichenfolge zuweisen, erhalten Sie immer tür zurück. Wahrscheinlich verzichten Sie auf einen Schritt aus Ihrem Code, z. B. indem Sie die Zeichenfolge über AJAX an einen Server senden. Um dies zu tun, muss die Zeichenfolge codiert werden, in der Regel mit UTF-8, in diesem Fall ist die korrekte Codierung tür, wie Sie beobachtet haben. Wenn der Server jedoch in ISO-8859-1 anstelle von UTF-8 arbeitet, wird er annehmen, dass die ursprüngliche Zeichenfolge tür war, und versuchen, sie wie beschrieben in tã¼r zu schreiben. Dies führt zu Problemen, wenn das Frontend versucht, es als UTF-8 zu interpretieren. Die Lösung besteht darin, sicherzustellen, dass der Server auch in UTF-8 funktioniert.