Wie zu erkennen, wenn ein string kodiert ist, mit escape() oder alsterrunde()

Ich habe ein web-service, empfängt Daten von verschiedenen clients. Einige von Ihnen sendet die Daten verschlüsselt mittels escape(), während die anderen stattdessen alsterrunde(). Gibt es eine Möglichkeit zum erkennen der Codierung verwendet, um die Flucht der Daten?

  • Warum müssen Sie das wissen?
  • Ich habe keine Kontrolle über die gesendeten Daten von unseren Kunden, und wie ich schon sagte, einige von Ihnen entkommen (), während die anderen verwenden alsterrunde() statt. Mit unescape in einem string codiert mit alsterrunde() erzeugen schlechtes Zeichen, und ich möchte vermeiden, dass. Eine juristische überprüfung, um zu schauen, ob der string nur hat es escape-Sequenzen, in Paaren, als %xx%xx.
  • Endlich habe ich die Antwort gefunden. decodeURIComponent wird immer decodieren escaped chars, wie es verwendet einige Konventionen zu erkennen, die für jedes symbol, wenn die Codierung in utf-8 oder ascii. Jedoch, wie Swingley Kommentare, wenn ein client sendet verschlüsselte Daten, die mit escape(), einige Daten könnten verloren gehen oder verstümmelt. Also ich gebe den Punkt an ihn.
  • Da alsterrunde() verwendet UTF-8-Codierung von Zeichen >= 128, können Sie auf die server-seitige Prüfung auf gültige UTF-8-Sequenzen. Wenn die Daten enthalten ungültige UTF-8-Sequenzen, die die Daten erzeugt worden ist, mit escape() und Sie müssen wohl davon ausgehen, es ist ISO-8859-1 kodiert. Oktette von ISO-8859-1-Daten in der Praxis nie Aussehen gültige UTF-8-Sequenzen.
InformationsquelleAutor Rodrigo | 2009-08-14
Schreibe einen Kommentar