Sonerezh / sonerezh

A self-hosted, web-based application to stream your music, everywhere.
https://www.sonerezh.bzh
GNU Affero General Public License v3.0
769 stars 122 forks source link

Accents dans les fichiers non supporté #206

Open TheBlackReverand opened 8 years ago

TheBlackReverand commented 8 years ago

Bonjour,

Je viens de tester Sonerezh et j'ai quelques difficultés sur le scan de ma bibliothèques.

Chaque nom de dossier ou fichier de musique possédant un accent fait crasher le process d'import.

La page reste sur "scan en cours, ne pas changer de page". Si je sort et relance j'ai un lock (j'ai fait un delete manuel de celui-ci pour "debugger" le process)

Sonorezh 1.1.1 Win7 Chrome 51.0.2704.84 m wampserver3_x64_apache2.4.17_mysql5.7.9_php5.6.16_php7.0.0.exe Base mysql en utf8_general_ci

J'ai checké la BDD et les meta contenant des accents sont bien géré.

Par contre je n'ai pas trouvé beaucoup de log.... Voici la seul trace qui pourrais être intéressante... "INFO: Could not find files for the given pattern(s)." C:\wamp64\logs\apache_error.log

Merci et bon courage

TheBlackReverand commented 8 years ago

Je viens d'ajouter un try/catch dans le fichier SongsController.php à la ligne if (!$this->Song->save($parse_result['data']))

Voici le message de l'exception

catch save : SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE9parab...' for column 'source_path' at row 1

TheBlackReverand commented 8 years ago

Je suis remonté jusque dans Cake.

DboSource.php if ($this->execute($this->renderStatement('create', $query)))

Si je récupère le retour de "renderStatement" j'obtiens le SQL suivant (via error_log(...))

INTO sonerezh.songs (title, artist, band, album, track_number, playtime, year, genre, cover, source_path, modified, created) VALUES ('Inséparables', 'Mylène Farmer', 'Mylène Farmer', 'Bleu Noir', 12, '3:15', 2010, 'Variété française', 'bc83af41885a8d6ea24e4247cff0b1d3.jpeg', 'C:\musiques\Mylene Farmer\Bleu Noir\12 Inséparables.mp3', '2016-06-17 09:17:54', '2016-06-17 09:17:54')

On y vois que les accents des méta-data ne sont pas encodés de la même manière que les accents du PATH.

Ne connaissance pas trop php je vais avoir du mal à pousser plus loin l'analyse.... A votre avis? pb de config ou un bug d'encodage?

TheBlackReverand commented 8 years ago

Rebondissement! Il me prend un doute....j'ouvre à nouveau mon fichier de log mais avec Notepad++ et je remarque que le fichier est en ANSI!! Alors que toute l'appli est en UTF8(sans BOM).

Une fois le log décodé correctement je remarque que le SQL problématique est en fait:

INSERT INTO sonerezh.songs (title, artist, band, album, track_number, playtime, year, genre, cover, source_path, modified, created) VALUES ('Inséparables', 'Mylène FARMER', 'Mylène Farmer', 'Bleu Noir', 12, '3:15', 2010, 'Variété française', '65d7542a9c682c3a147cdca6eaf483e3.jpeg', 'C:\musiques\Mylene Farmer\Bleu Noir\12 Ins걡rables.mp3', '2016-06-17 15:00:13', '2016-06-17 15:00:13')

Et que dans la fonction import() de SongsController.php j'ai: file = C:\musiques\Mylene Farmer\Bleu Noir\12 Ins걡rables.mp3

J'ai donc un problème de parcours de mes dossiers, l'encodage n'est pas prise en compte.

D'après ce post http://stackoverflow.com/a/4030739 cela pourrais être lié à l'encodage utilisé par mon OS (un windows 7 US).

Dans le dossier Folder.php j'ai ajouter une trace aprés "$name = $item->getFileName();"

error_log("name = " . $name . " - " . mb_detect_encoding($name) . " - " . utf8_encode($name));

j'obtiens alors

[17-Jun-2016 15:37:56 UTC] name = 10 Diabolique mon ange.mp3 - ASCII - 10 Diabolique mon ange.mp3 [17-Jun-2016 15:37:56 UTC] name = 12 Ins걡rables.mp3 - UTF-8 - 12 Inséparables.mp3

On y vois donc un encodage différent suivant la présence ou non de caractères accentués.

Je vais essayer de d'utiliser utf8_encode sur tous les fileName et pathName pour voir si je peux maintenant importer des dossiers et fichiers avec accents....

lGuillaume124 commented 8 years ago

Bonjour,

En effet j'avais personnellement essayé d'installer Sonerezh sur Windows (Windows Server, puis Windows 7) mais je n'ai jamais réussi à avoir quelque chose de stable et parfaitement fonctionnel.

Le support WIndows n'est donc pas du tout garanti...