[MySQL][PHP]Problem z kodowaniem "-" (myśnika) |
[MySQL][PHP]Problem z kodowaniem "-" (myśnika) |
31.05.2022, 12:58:06
Post
#1
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 0 Dołączył: 9.04.2013 Ostrzeżenie: (0%) |
Proszę o pomoc w takiej sprawie
Na stronie .php w UTF8 bez BOM mam formularz HTML z którego metodą Post zapisuję dane do bazy mysql w formacie Latin2_general_ci. Jak ręcznie wprowadza się dane do formularza to wszystko jest OK. Jednak jak się coś wklei z Worda albo zaciągnie curlem, to znak "-" myślnika, mimo że w formularzu jest myślnikiem, powoduje błąd zapisu i nic się w bazie nie zapisuje. Np. jak myślnik jest tak zakodowany . Jak osiągnąć: 1. Cel minimum - żeby nieznany znak zignorowało i do bazy zapisało 2. Cel najlepiej - jak to przekonwertować żeby zapisało się w całości Zapewne nie tylko "-" powoduje powyższe błędy Z góry dziękuję za pomoc Ten post edytował maraska 31.05.2022, 12:59:28 |
|
|
31.05.2022, 13:29:39
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Pokaz kod jak to pobierasz z forma i jak to zapisujesz do bazy
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
31.05.2022, 13:49:54
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
W latin2 nie zapiszesz znaków unicode (wielobajtowych).
Musisz przekonwertować tabelę na utf8 (wraz z zawartością). -------------------- |
|
|
31.05.2022, 14:30:39
Post
#4
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 0 Dołączył: 9.04.2013 Ostrzeżenie: (0%) |
Kod:
O ile jeszcze pamiętam po setkach testów, chyba to ISO-8859-1 dawało radę z "-" (myślnikiem) ale polskie znaki w bazie były reprezentowane kodami. Tak jak pisałem, kod działa OK. Konwersja myślników, w szczególności kodowanych w Word i takich "–" jest problemem Ten post edytował maraska 31.05.2022, 14:33:02 |
|
|
31.05.2022, 14:34:54
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
zamien mysql na mysqli albo na PDO i zacznij uzywac bindowania. rozszerzenie mysql nie zyje juz od lat a twoj kod teraz jest dziurawy jak sito
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
31.05.2022, 14:43:37
Post
#6
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 0 Dołączył: 9.04.2013 Ostrzeżenie: (0%) |
A jakaś porada w zakresie tematu wątku ?
|
|
|
31.05.2022, 14:51:24
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
No wlasnie napisalem: uzyj bindownaia
Z tego co zrozumialem to masz blad zapytania. BINDowanie powinno rozwiazac problem. Poza tym trueblue tez dobrze napisal -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
31.05.2022, 15:06:17
Post
#8
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 0 Dołączył: 9.04.2013 Ostrzeżenie: (0%) |
No wlasnie napisalem: uzyj bindownaia Z tego co zrozumialem to masz blad zapytania. BINDowanie powinno rozwiazac problem. Poza tym trueblue tez dobrze napisal Nie mam błędu zapytania. Dwa razy pisałem że zapis działa. Przestaje działać jak w treści jest "-". Co tu bindowanie zmieni? |
|
|
31.05.2022, 15:33:40
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Cytat Nie mam błędu zapytania. Dwa razy pisałem że zapis działa. Przestaje działać jak w treści jest "-". Zdecyduj sie: skoro piszesz, ze przestaje dzialac jak masz myslnik, to znaczy ze nie dziala... Dobra, ja juz wymiekam, zawsze bylem kiepski z logiki edit: dobra, post ostatniej szansy Wyswietl sobie blad bazy by zobaczyc o co sie pluje baza gdy nie dziala bo dales myslnik -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
1.06.2022, 12:12:44
Post
#10
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Musisz wszystko zapisywać w UTF-8 dla tego że tekst który wklejsza z Worda posiadający "myślnik" to nie jest zwykły znak minus który uważa się za myślnik dość częśto a jest to En Dash który do zakodowania potrzebuje więcej bajtów.
Ogólnie wszystko co wkleisz z Worda może być czymś innym niż to czego oczekujesz. |
|
|
3.06.2022, 14:35:23
Post
#11
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 0 Dołączył: 9.04.2013 Ostrzeżenie: (0%) |
Musisz wszystko zapisywać w UTF-8 dla tego że tekst który wklejsza z Worda posiadający "myślnik" to nie jest zwykły znak minus który uważa się za myślnik dość częśto a jest to En Dash który do zakodowania potrzebuje więcej bajtów. Ogólnie wszystko co wkleisz z Worda może być czymś innym niż to czego oczekujesz. To wiem, tylko jak mam w formularzu - accept-charset="utf-8" - to na wyjściu z formularza powinno być tylko UTF8. Racja? I wtedy jakiś iconvert do Latin2. Ale mi ta konwersja jakoś nie działa. |
|
|
3.06.2022, 14:54:03
Post
#12
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Nie. Nie masz robić żadnej konwersji. Masz Form ustawić na UTF, pliki PHP zakodowane w UTF, baza w UTF. Żadnej konwersji do czegokolwiek.
|
|
|
3.06.2022, 14:58:57
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Napisałem Ci w poście #3 co trzeba zrobić.
-------------------- |
|
|
3.06.2022, 15:45:22
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Stare, ciągle aktualne https://prophp.pl/article/3/kodowanie_znakow_na_stronach_www
-------------------- |
|
|
6.06.2022, 15:07:34
Post
#15
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 0 Dołączył: 9.04.2013 Ostrzeżenie: (0%) |
Nie. Nie masz robić żadnej konwersji. Masz Form ustawić na UTF, pliki PHP zakodowane w UTF, baza w UTF. Żadnej konwersji do czegokolwiek. Jakby to był nowy projekt to powyższa porada jest oczywista. Ale jak trzeba dorobić coś małego gdy z bazy korzysta już ileś tam skryptów, to zmiana kodowania bazy = szukanie wszystkiego co się do bazy odwołuje i przerabianie wszystkiego. |
|
|
6.06.2022, 17:03:03
Post
#16
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) |
To radze przerobić te ileś tam skryptów, zwłaszcza, że pracy przy tym raczej nie będzie dużo. Za chwilę będzie to klika -naście, - dziesiąt skryptów i problem będzie tylko narastał.
|
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 10:40 |