Autor Zpráva
midin
Profil *
Dobrý den,
z html formu přijímám přes get nějaká data, která posléze jdou do mysql_query do tabulky. Pro české znaky jsem zkoušel jsem tucty kombinací kódování a vždy se najde nějaký znak, který se posléze v phpMyAdminu zobrazí špatně, předkládám skript:

<?php

require("db_ic.php");

mb_language("uni");
mb_internal_encoding("UTF-8");

$name = $_GET['name'];
$address = $_GET['address'];
$lat = $_GET['lat'];
$lng = $_GET['lng'];
$type = $_GET['type'];

$connection=mysql_connect ($host,$user,$pass);
if (!$connection) {
  die('Not connected : ' . mysql_error());
}

$db_selected = mysql_select_db($db, $connection);
if (!$db_selected) {
  die ('Can\'t use db : ' . mysql_error());
}

MySQL_Query("SET NAMES UTF8");

$query = sprintf("INSERT INTO markers " .
         " (id, name, address, lat, lng, type ) " .
         " VALUES (NULL, '%s', '%s', '%s', '%s', '%s');",
         mysql_real_escape_string($name),
         mysql_real_escape_string($address),
         mysql_real_escape_string($lat),
         mysql_real_escape_string($lng),
         mysql_real_escape_string($type));

$result = mysql_query($query);

if (!$result) {
  die('Invalid query: ' . mysql_error());
}

?>


Zápasil jsem i s poli escape/unescape problémových znaků, ale kýžený výsledek nebyl. Poradí někdo? Defaultní kódování na mysql je utf-8, html soubor je v utf-8 také.
Díky za odpovědi,
midin
Zool
Profil *
V databázi máte nastavené kodování utf8 je to tak, a soubor je také kodovaný v UTF8(nemyslím stránku jako hlavičku, ale celý soubor)?

pak bych tam zkusil přidat ještě tyto řádky, pod přihlášení:
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
mysql_query("SET character_set_results=utf8");
midin
Profil *
ano, ano.
vyzkoušeno, nepomáhá :( (

při přidání vašich řádek se znaky s čárkami v phpmyadminu nezobrazují vůbec, znaky s háčky ve tvaru %u110D apod.
rozdíl mezi háčky a čárkami je ve tvaru.. (háčky čtyřmístné, čárky dvojmístné (á = %E1)), nehraje to nějakou roli??). a není takto nastavené utf_general a já potřebuji utf_czech?

midin
Zool
Profil *
Nee v tom by problém být neměl rozdíl je v tom, že jedno rozeznává velká a malá písmena a to utf8_general_ci je nerozeznává, doporučiji používat toto. A je to v té databázi uložene také bez háčků?
midin
Profil *
"znaky s háčky ve tvaru %u110D" - není
Zool
Profil *
Tak potom těžko říct, každopádně se ty znaky mění někde mezi databází a php, pokud máš tedy stránku v utf-8 i soubor v utf8 a databázi taky nastavenou na utf8, pak bych zkusil vyhodit řádky

mb_language("uni");
mb_internal_encoding("UTF-8");


Pak bych ještě zkusil udělat na stránce toto a vypsat to
echo iconv  ( "UTF-8"  , "UTF-8" , $_GET['name']  );

Pokud to nějak zmutuje, tak bude chyba v kodování stránky.
midin
Profil *
solved - hodil jsem tam dvě pole escape/unescape ("%u110"->"á" atd...) a str_replace :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: