![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 500 Pomógł: 1 Dołączył: 29.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam taki problem, że pobieram z folderu nazwy plików używając klasy DirectoryIterator i wkładam je do bazy danych mysql
W nazwach tych plików znajdują się polskie znaki i problem jest w tym, że dodając je do bazy otrzymuje w rekordzie ciąg znaków uciętych do pierwszego napotkanego polskiego znaku. Przykładowo jeżeli plik się nazywa Kraków.jpg to w bazie dostaję samo Krak Kombinowałem coś z funkcją iconv i dodałem do kodu coś takiego
Jednak otrzymuję informację Kod Notice: iconv(): Detected an illegal character in input string Pewnie przez to, że w nazwach znajdują się pauzy. Dodam, że plik php i strona html mają kodowanie ustawione na UTF-8. W bazie danych metoda porównywania napistów to utf8_general_ci Jak mogę się pozbyć tego problemu? Nie mogę po prostu zignorować polskich znaków gdyż muszą one w bazie być zapisane. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 280 Pomógł: 20 Dołączył: 12.12.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Możesz zawsze zakodować nazwę pliku (np. przez base64) przed włożeniem do bazy a potem w momencie gdy będzie potrzebna ją odszyfrować.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 500 Pomógł: 1 Dołączył: 29.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
nie bardzo bo odkodowana wartość również będzie miała krzaki ;/
Przy wszystkich nazwach funkcja mb_detect_encoding() wykrywa UTF-8 jednak krzaki się pojawiają. Co dziwne nie pojawiają się przy wszystkich nazwach plików. Niektóre wyświetla dobrze ;/ |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 290 Pomógł: 48 Dołączył: 11.05.2008 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Metoda porównywania napisów jest dla całej bazy / tabeli / pola?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 500 Pomógł: 1 Dołączył: 29.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
No już pomijając bazę, jeżeli po prostu chce na stronie wyświetlić nazwę pliku w dokumencie html to wyskakują krzaki ;/
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 290 Pomógł: 48 Dołączył: 11.05.2008 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
W bazie zapisuje się poprawnie? Jak wygląda ten plik HTML?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 500 Pomógł: 1 Dołączył: 29.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
W bazie też źle zapisuje.
Zwykły plik html (plik szablonu smarty) z kodowaniem UTF-8. Plik php też ma kodowanie UTF-8 Dodam jeszcze, że na stronie na localhoscie prawie wszystkie pliki mają krzaki wyświetlając ich nazwy natomiast po przerzuceniu na serwer z linuxem nazwy wyświetlają się poprawnie (chociaż nie wszystkie) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
stworz plik zupełnie na nowo w formacie UTF-8 i przeklej kod. Ale jeśi masz ustawione kodowania wszędzie tak jak trzeba czytaj : plik utf-8 , charset i metode porównywania napisów to cholera wie gdzie robisz błąd...
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 9.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Przed SELECT i UPDATE/INSERT
query('SET NAMES utf8'); query('SET CHARACTER_SET utf8_unicode_ci'); |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 500 Pomógł: 1 Dołączył: 29.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
No raczej nic złego zrobić nie mogę. Jeszcze nakreślę trochę sytuację
Jak wrzucam pliki na serwer to przy niektórych polskie znaki zamieniają się na krzaczki - niektóre wrzucają się dobrze (polskie znaki są zachowane) Natomiast jak wyświetlam listę plików przy użyciu directoryIterator to te pliki które na serwerze mają krzaki wyświetlają się dobrze a te które na serwerze mają polskie znaki wyświetlają się źle. Usunąłem z dokumentu html informację o kodowaniu i sytuacja się odwróciła. Te pliki co miały krzaki były wyświetlane z tymi krzakami a te co miały polskie znaki zachowane wyświetlały się ok |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 18:23 |