2016-07-27 17 views
2

Zunächst funktioniert mein Code ... aber die resultierende Datei verursacht Probleme auf meinem Server. Nur Dateien mit merkwürdigen Zeichen verursachen Fehler auf dem Server, z. B. Datei existiert nicht oder Fehler beim Herstellen einer Verbindung zur Datei, wenn versucht wird, die Datei über FTP zu öffnen. Alle Dateien ohne merkwürdige Zeichen funktionieren auf dem Server einwandfrei und können geöffnet und bearbeitet werden.Strange nicht englische Zeichen in String, Fehler auf dem Server

Hier ist mein Workflow:

  1. Text aus einem TextView auf Benutzer-Bildschirm holen, es durch diesen Code ausführen unerwünschte Zeichen zu entfernen:

replaceAll("[^a-z ,()A-Z0-9]+", "-");

  1. Erstellen Sie eine Textdatei mit diesem Text als Dateinamen;
  2. hochladen diese Textdatei auf dem Server mit diesem PHP-Skript:

    <?php 
    
    $file_path = "uploads/"; 
    
    $file_path = $file_path . basename($_FILES['uploaded_file']['name']); 
    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) { 
    echo "success"; 
    } else{ 
    echo "fail"; 
    } 
    ?> 
    

Die Dateinamen diese seltsamen Zeichen enthalten, nehme ich an, aufgrund von nicht englischen Zeichen auf den Bildschirm des Benutzers.

enter image description here

Ich muss vorsichtig sein, denn der Pfad die Datei auf meinem Server hochladen basiert auf diesem Dateinamen und ich weiß nicht, wie es zu testen, mit nicht englischen Zeichen. Jede Hilfe wird sehr geschätzt. Ich muss alle nicht englischen Zeichen entfernen/ersetzen, ohne den Dateipfad zu beschädigen.

+0

Dies liegt daran, dass die vom Gerät gesendeten Zeichen nicht codiert sind. Bitte verschlüsseln Sie es mit UTF-8 und auf der Serverseite können Sie es entschlüsseln. – LvN

+0

Können Sie bitte helfen, wie das geht? –

+1

Ich empfehle Ihnen, dies zu folgen [tutorial] (http://androidexample.com/How_To_Make_HTTP_POST_Request_To_Server_-_Android_Example/index.php?view=article_discription&aid=64&aaid=89) – LvN

Antwort

0

Verwenden Sie diese Zeile ihre Hilfe.

String styledText = Ihr Dateiname;

textView.setText (Html.fromHtml (styledText));

+0

'fromHtml' ist entzogen –

0

Technisch können Sie dies lösen, indem Sie String auf Server mit mb_convert_encoding in UTF-8 konvertieren, aber Ihr Code ist wirklich nicht sicher, da Sie eine übergebene Benutzervariable als Dateipfad verwenden und Hacker/.. /../../ und so weiter.
Die Lösung, die ich für beide benutze, besteht darin, den übergebenen Dateinamen auf dem Server in eine hexadezimale Zeichenfolge zu konvertieren, indem bin2hex verwendet wird. Auf diese Weise haben Sie einen sehr sicheren Dateinamen ohne Kodierungsprobleme.

+0

Sie haben einen tollen Punkt, aber leider habe ich keine Erfahrung darin und weiß nicht, wie man das macht. Der Name der Textdatei wird in meinem Code generiert (basierend auf einem Textfeld, das von der App erstellt wird) und der Benutzer sieht ihn nie. Es enthält Fehlerdaten, die ich verwenden kann, aber ich sehe Ihren Punkt, wie unsicher das sein kann. Vielen Dank für Ihre Antwort ... –

+1

$ file_path = $ file_path. bin2hex (Basisname ($ _FILES ['uploaded_file'] ['Name'])); – lionscribe

+0

Das scheint zu funktionieren, aber ich kann die seltsamen Zeichen, die erzeugt werden, nicht duplizieren (ohne Ihre Reparatur), sogar andere Sprachen von meiner APP hinzufügend. Irgendeine Idee, wie man das prüft? –