Kódování na serveru + čtení
- exquis
- Člen | 83
Ahoj,
mám problém s kódováním češtiny. Klient mi skrze FTP posílá soubory na
eshop, avšak je má bohužel nešťastně s češtinou. Dále zasílá XML,
kde jsou uvedené cesty ve stylo ID produktu – cesta k obrázku, já si je
mám strojově načíst a dále zpracovat. Problém je, kódování, kde cesta
je …/KOČÁRKY/…
Původní myšlenka byla, že vždy před zpracováním projedu všechny soubory + složky nějakou funkcí, která mi názvy souborů a složek sjednotí viz neťťácký Strings::webalize() či něco podobného. Stejnou funkcí bych pak projel cesty obsažené v XML a měl bych hotovo.
Problém je již samotné načtení cesty k obrázku. Mám přejmenovávací funkci ve stylu:
foreach (Finder::findFiles(self::FILE_MASKS)->from($dir) as $name) {
//echo mb_detect_encoding($name).PHP_EOL;
$source = self::switchSlashes(str_replace($rootdir, '', $name));
$target = str_replace(self::DIR, self::DIR_SANITIZED, $rootdir . self::sanitizeText($source));
if ( ! $source || ! $target || $source === $rootdir || $target === $rootdir) {
continue;
}
try {
FileSystem::rename($rootdir . $source, $target);
} catch (IOException $exception) {
continue;
}
}
na něco to pomohlo, ale furt tam jsou cesty, které se mi nedaří načíst a tvrdí, že neexistují, i když je tam fyzicky vidím.
Zkoušel jsem opravit kódování pomocí https://github.com/…od/forceutf8, nepomohlo.
Pokud odkomentuji mb_detect_encoding, tak mi vyhodí, že se jedná o UTF-8, ale cesta pak vypadá jako: „/premier/KO▒▒RKY/ELODIE DETAILS/103817_LS.JPG“
Vše běhá na linux serveru, ke kterému mám plný přístup, takže mohu měnit různá nastavení, ale nic, už jsem zkoušel nastavit české prostředí ($LANG = cs_CZ), dále v php mám setlocale(LC_ALL, ‚cs_CZ‘), ale prostě nic, nějaké nápady či zkušenosti?