Open TheBlackReverand opened 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
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?
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....
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...
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