Autor | Zpráva | ||
---|---|---|---|
janky Profil |
#1 · Zasláno: 30. 6. 2020, 10:25:47
Dobrý den, na webu a v databázi se mi zobrazují otazníky respektive čtverečky.
Po projedí zdejšího faq jsem vše upravil ale stale je někde problém. Všechny soubory mam uložené win 1250 (aspoň mi to ukazuje visual studio v pravo dole), všechny tabulky v databázi jsou win 1250-cs. Na indexu mám header("Content-type: text/html;charset=windows-1250");
A nevím si rady... Obrazovka s náhledem kde jsou špatně znaky imgur.com/BNzhLlu Obrazovka s databází imgur.com/kY1amLK Kód kterým ukládám do db: // Uloží cenu všech karet podle jména do databáze function cerny_rytir_card_price_save($card, $database) { $card_layout = $card['layout']; $name = $card['name']; // Ošetřění řetězce vrátí pouze první jméno pokud má karta transform v "// if($card_layout == 'transform' || $card_layout == 'adventure' || $card_layout == 'flip') { $name = trim(substr($card['name'], 0, strrpos($name, "//"))); } // Nahrazení znaků $name = str_replace('\'', '´', $name); $name = str_replace(' ', '%20', $name); $url = 'http://cernyrytir.cz/index.php3?akce=3&searchtype=card&searchname='.$name; $cards = loadCardCernyRytir($url); if($cards) { foreach ($cards as $card) { echo $card['name'].' - '.$card['set'].' - '.$card['price'].',-'; echo '<br>'; // $database->query('INSERT INTO card_price', [ // 'card_name' => $card['name'], // 'set_name' => $card['set'], // ]); $result = $database->query('INSERT INTO card_price',[ 'store' => 'černý rytíř', 'card_name' => trim($card['name']), 'properties' => trim($card['properties']), 'set_name' => trim($card['set']), 'stock' => trim($card['stock']), 'price' => $card['price'], 'foil' => $card['foil'], ]); } } } Děkuji za případnou pomoc |
||
Kajman Profil |
#2 · Zasláno: 30. 6. 2020, 10:50:36
A nastavil jste si kódování pro připojení do db na cp1250?
Některé časteji řešené dotazy pro MySQL - FAQ » MySQL a čeština |
||
janky Profil |
#3 · Zasláno: 30. 6. 2020, 11:18:50
Kajman:
Používám DIBI, nevím kam a jak a kam to zapsat. $database = new Dibi\Connection([ 'driver' => 'mysqli', 'host' => 'localhost', 'username' => 'root', 'password' => 'root', 'database' => 'mtg', ]); $database->set_charset("cp1250_czech_cs"); Zkoušel sem toto ale chlásí to chybu Uncaught LogicException: Call to undefined method Dibi\Connection::set_charset().
|
||
RastyAmateur Profil |
#4 · Zasláno: 30. 6. 2020, 11:22:53
janky:
Zkus to narvat do toho konstruktoru, viz zde. |
||
Keeehi Profil |
$database = new Dibi\Connection([ 'driver' => 'mysqli', 'host' => 'localhost', 'username' => 'root', 'password' => 'root', 'database' => 'mtg', 'charset' => 'cp1250' ]); |
||
janky Profil |
#6 · Zasláno: 30. 6. 2020, 11:32:32
taky Fatal error:
Fatal error: Uncaught Dibi\DriverException: Unknown character set: 'cp1250_bin' in D:\www\sideboard.cz\vendor\dibi\dibi\src\Dibi\Drivers\MySqliDriver.php:163 Stack trace: #0 D:\www\sideboard.cz\vendor\dibi\dibi\src\Dibi\Drivers\MySqliDriver.php(142): Dibi\Drivers\MySqliDriver::createException('Unknown charact...', 1115, 'SET NAMES 'cp12...') #1 D:\www\sideboard.cz\vendor\dibi\dibi\src\Dibi\Drivers\MySqliDriver.php(108): Dibi\Drivers\MySqliDriver->query('SET NAMES 'cp12...') #2 D:\www\sideboard.cz\vendor\dibi\dibi\src\Dibi\Connection.php(129): Dibi\Drivers\MySqliDriver->__construct(Array) #3 D:\www\sideboard.cz\vendor\dibi\dibi\src\Dibi\Connection.php(90): Dibi\Connection->connect() #4 D:\www\sideboard.cz\includes\database.php(4): Dibi\Connection->__construct(Array) #5 D:\www\sideboard.cz\index.php(10): require_once('D:\\www\\sideboar...') #6 {main} SQL: SET NAMES 'cp1250_bin' thrown in D:\www\sideboard.cz\vendor\dibi\dibi\src\Dibi\Drivers\MySqliDriver.php on line 163 Nejdou ani cp1250_bin cp1250_croatian_ci cp1250_general_ci cp1250_polish_ci |
||
Kajman Profil |
#7 · Zasláno: 30. 6. 2020, 11:48:47
Má tam být jen charset bez porovnání. Tedy cp1250.
|
||
janky Profil |
#8 · Zasláno: 30. 6. 2020, 11:51:05
Funguje, děkuji za pomoc.
|
||
janky Profil |
Tak sem narazil na další problém.
Získávám data karet z json api a ty si ukládám do databáze. Ale když mam vše nastaveno na cp1250, tak json mi vrací špatně zformátovaný znak "—" někde ho nahradí — jinde zase â’ ...
["type_line"]=> string(32) "Legendary Planeswalker — Lukka" Má tam být: ["type_line"]=> string(32) "Legendary Planeswalker — Lukka" Dokáže někdo pomoct? Případně nabízím zakázku vytvoření funkce které nemusí být uložená v cp1250 |
||
Kajman Profil |
#10 · Zasláno: 30. 6. 2020, 14:49:59
Pokud přijdou data z api v UTF8, tak si je převeďte díky php funkci
iconv Jen pozor, že cp1250 je omezená znaková sada a je jen podmnožinou UTF8 a může se stát, že nějaký znak nemá v cp1250 místo. |
||
Časová prodleva: 4 roky
|
0