logo
15.12.2019 20:59
1
Môžem poprosiť o radu.

Nedarí sa mi správne ukladať text do DB. Vyterá takto "Spoločenstvo evanjelických žien veľkej Bratislavy pozýva na stretnutie ".

Pokúsil som sa to spraviť takto
mb_convert_encoding($linkText, "Windows-1252", "UTF-8");

ale v niektorých textoch sú špeciálne znaky, ktoré DB nevie uložiť.

Dik za radu.
15.12.2019 21:09
2
A v databázi je nastaveno také správné kódování? Většinou v phpmyadmin v záložce Úpravy je Porovnávání, je tam např. utf8_slovak_ci nebo utf8mb4_slovak_ci případně to lze nastavit u každého sloupce ve struktuře tabulky zvlášť
15.12.2019 21:20
3
V Db mám kodovanie utf8mb4_unicode_ci,

Dodám že text ťahám z externého zdroja a tak mi ho ukladá. Potrebujem zmeniť kodovanie pred uložením.
15.12.2019 21:24
4
a co tohle

Kód:
$text = iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text);
15.12.2019 21:26
5
Aj to som skúšal. Pri bežnom texte je to v poriadku.
ale akonáhle v externom zdroji je napr. <em></em>

tak to nevie preložiť a DB mi hlási neznámy charakter. niečo na spôsob \xC ..
15.12.2019 21:29
6
tak to záleží co vše ten zdroj vrací, to bude problém ještě jinde, třeba by se dalo použít json_decode, urldecode, převod těch entit atd.
15.12.2019 21:33
7
Áno, je to možné. ale to predčí moje skúsenosti.
Už som nad tým zmárnil veľa času a bezvýsledne, dosiahol som len väčšiu frustráciu.
15.12.2019 22:35
8
Původně odeslal Gabonator
Áno, je to možné. ale to predčí moje skúsenosti.
Už som nad tým zmárnil veľa času a bezvýsledne, dosiahol som len väčšiu frustráciu.
Buď v klidu, já s UTF-8 zápasím denně
15.12.2019 23:59
9
Zkus
str = iconv("CP1250", "UTF-8", str);
nebo
str = iconv("CP1250", "UTF-8//TRANSLIT", str);
16.12.2019 01:14
10
A máš správně nastavené i kódování při připojení do SQL?
PHP: mysqli::set_charset - Manual

Prohnal si řetězce escapem?
PHP: mysqli::real_escape_string - Manual

Jsi si jistý původní vstupním kódováním? Detekce občas píše blbosti, nejlépe to ze zkušenosti detekuje EditPlus
Když nevím, tak otevřu tam, dám Save As a dole ukáže reálné kódování, jako první pokus pak dám do UTF8 (nebo co je potřeba) a zkusím, jestli to funguje takto překonvertované.
EditPlus - Download Free Trial
16.12.2019 07:42
11
Původně odeslal skorozacatecnik
Zkus
str = iconv("CP1250", "UTF-8", str);
nebo
str = iconv("CP1250", "UTF-8//TRANSLIT", str);
Obidva prípady hlásia chybu: iconv(): Detected an illegal character in input string
16.12.2019 09:02
12
Opravte parametry pro připojení DB. Správné kódování je věcí klienta, nikoli aplikace.
Pokud nemůžete DB smazat, nejprve opravte texty v DB a teprve pak testujte připojení k PHP.