Я использую PHP 5.3 с MSSQL-Server 2005 и драйвером MSSQL-Server (PDO) от MS.
Недавно я немного боролся с новой версией драйвера и кодировкой, которую он использует для передачи данных из БД. Поэтому я решил настроить все приложение на UTF-8, чтобы избежать подобных проблем в будущем.
Поэтому я изменил базу данных для использования типов данных unicode, настроил заголовок HTML и настроил Eclipse для сохранения кодовых файлов в формате UTF-8. Также я добавил соответствующий тег accept-charset во все мои HTML-формы. Все идет нормально. Все работало, как и ожидалось, но теперь я застрял с новой проблемой.
Я написал простой скрипт, который может загружать файлы с помощью HTML-формы и сохранять их на моем веб-сервере (Windows Server 2003 с IIS6). Это работало отлично, пока я не переключился на UTF. Когда я загружаю файл со специальными символами в имени файла, они не сохраняются правильно. При добавлении файла с именем «ÄÖÜ.txt» на моем веб-сервере появляется файл с именем «Ã„ à – Ãœ.txt ". Это может быть проблемой, потому что вся дальнейшая обработка этих файлов зависит от гиперссылок, которые больше не являются правильными.
Я пробовал несколько возможных решений, таких как:
$isMoved = move_uploaded_file($_FILES['uploadedFile']['tmp_name'],"myFolder". utf8_encode($_FILES['uploadedFile']['name']));
Но я всегда получаю правильное имя файла в файловой системе сервера или другое.
Есть идеи? : D
Заранее спасибо
Daniel