Sziasztok!
Eléggé kezdő vagyok még, bocsássatok meg.
Tehát: van egy UTF-8 táblám, ezt szeretném lekérdezni az alábbi kódrészlettel (illetve a módosított változatával),ebből: id: Árvíztűrő tükörfúró, Name: Árvíztűrő Tükörfúró ez lesz:
id: �rv�zt?r? T�k�rf�r� - Name: �rv�zt?r? T�k�rf�r�
Mit lehet ezzel kezdeni?
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "
";
}
} else {
echo "0 results";
}
$conn->close();
?>
- 2796 megtekintés
Hozzászólások
Content-Type: text/html; charset=utf-8
Megy ilyen fejléc?
Ha end-to-end mennek binárisan az utf-8 karakterek, akkor csak ez lehet a gond. Ha valahol elveszik az utf-8 átkódolás miatt, azt meg csak ott lehet javítani értelemszerűen (tábla encoding, mysql kapcsolat encoding, stb).
- A hozzászóláshoz be kell jelentkezni
A kapcsolat encodingot kifejted? Kösz!
- A hozzászóláshoz be kell jelentkezni
google://php+mysql+connection+encoding
- A hozzászóláshoz be kell jelentkezni
A legelejére:
header('Content-Type: text/html; charset=UTF-8');
A mysql csatlakozás mögé pedig
$conn->query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Így is ugyanaz.
- A hozzászóláshoz be kell jelentkezni
még szerencse hogy leírtam hogy a mysql csatlakozás mögé...
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
$conn->set_charset("utf8");
a lekérdezés előtt?
- A hozzászóláshoz be kell jelentkezni
Ugyanaz.
- A hozzászóláshoz be kell jelentkezni
Ha terminálból próbálod ahol a locale nem UTF8-as? :)
<?php echo setlocale(LC_ALL, 0); ?>
mit válaszol?
- A hozzászóláshoz be kell jelentkezni
Most nincs lehetőségem rá.
Itt van az egész:
<?php
header('Content-type: text/html; charset=utf-8');
$servername = "localhost";
$username = "user";
$password = "pass";
$dbname = "db";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM otlet";
$result = $conn->query($sql);
$conn->query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
$conn->set_charset("utf8");
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "
id: ". $row["leiras"]. " - Name: ". $row["nev"]. " " . $row["email"] . "
";
}
} else {
echo "0 results";
}
$conn->close();
?>
- A hozzászóláshoz be kell jelentkezni
De ha előbb kérdezed le a select-et, es utána állítod be, hogy utf8-as kódolással szeretnéd lekérdezni a selectet, annak úgy nem sok értelme van.
$conn->query($sql) elé rakd.
- A hozzászóláshoz be kell jelentkezni
A nagy kérdés, hogy a tárolt adatok is UTF8-asok-e.
Láttam már olyat, hogy latin1 volt a tábla és varchar mezők, de utf8 adatok voltak benne. Így ha utf8-ként akarta lekérdezni az ember, akkor kiksz-krakszok voltak, viszont latin1-ként lekérdezve, kiechozva utf8 content-type-pal olvasható volt.
És ez visszafelé is igaz. Az insertnél oda kell figyelni, hogy megfelelő karakterkódolással menjen a query (amit a kolléga fentebb írt a set_charset dologgal). Lehet már itt csúszott el a dolog.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
szokásos dolgok.
a php fájlaid legyenek mind utf8-bn kódolva. (notepad++-ban utf8 BOM nélkül)
a mysql connectek és db select-ek stb után:
SET NAMES utf8;
SET collation_connection = 'utf8';
a php-d legeleslegelején legyen:
header('Content-Type: text/html; charset=utf-8');
html részben legyen:
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
És végül a mysql táblákat is nézd át pma-ban. legyen utf8-ra állítva minden szöveges meződ, de a tábla fajtája is és az adatbázis kódolása is. én amúgy utf8_unicode_ci -at használom, már több mint 7 éve és minden jó volt vele.
Valaki írta, hogy tudd meg valóban utf8-ban vannak e kódolva a sorok.
Érdemes még próbálkozni egy utf8_decode vagy utf8_encode -val php-ban. (ha a táblában nem utf8, akkor encode, ha NEM UTF8-ra akarod kódolni hanem pl latin2-re, akkor decode.
- A hozzászóláshoz be kell jelentkezni
[off]A képeket amit fentebb linkeltem láttad?[/off]
pedig már van :-(.
- A hozzászóláshoz be kell jelentkezni
hungarian helyett legyen general ott is, csak a szőrőzés kedvéért.
tudnál lőni egy shootot 1-2 sorról is? tehát a tartalomból pma-ban.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Tehát jól jelenik meg. ez azt jelenti, hogy valószínűleg a php-ban lesz a gondod.
most hogyan is néz ki a php fájlod? beletetted azokat az elemeket amiket írtam?
- A hozzászóláshoz be kell jelentkezni
<?php
header('Content-type: text/html; charset=utf-8');
$servername = "localhost";
$username = "usr";
$password = "pass";
$dbname = "db";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM idea";
$result = $conn->query($sql);
$conn->query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
$conn->set_charset("utf8");
$conn->query("SET NAMES utf8,SET collation_connection = 'utf8'");
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "
id: ". $row["leiras"]. " - Name: ". $row["nev"]. " " . $row["email"] . "
";
}
} else {
echo "0 results";
}
$conn->close();
?>
- A hozzászóláshoz be kell jelentkezni
fent is írták, hogy nem jó a sorrend:
<?php
header('Content-type: text/html; charset=utf-8');
$servername = "localhost";
$username = "usr";
$password = "pass";
$dbname = "db";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$conn->set_charset("utf8");
$conn->query("SET NAMES utf8,SET collation_connection = 'utf8'");
$conn->query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
$sql = "SELECT * FROM idea";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo " id: ". $row["leiras"]. " - Name: ". $row["nev"]. " " . $row["email"] . "";
}
} else {
echo "0 results";
}
$conn->close();
?>
- A hozzászóláshoz be kell jelentkezni
Működik, bocs a bénázásért!
Köszi*1000
- A hozzászóláshoz be kell jelentkezni
semmi gond, szív.
viszont még valami, bár lehet én vagyok régimódi és most így is megy, DE:
$conn->query("SET NAMES utf8,SET collation_connection = 'utf8'");
helyette:
$conn->query("SET NAMES utf8;SET collation_connection = 'utf8'");
vagy írd őket külön sorba, a pontosvessző választja el a lekérdezéseket ez szerintem így nem megy át a query-ben hiba nélkül ha sima vesszővel tolod.
- A hozzászóláshoz be kell jelentkezni
jah, és pls zárd le a code vagy quote tagot a kérdésedben!
- A hozzászóláshoz be kell jelentkezni
a mezők, a db minden utf8_bin, aztán set names utf8 minden konnektkor, meg a html is utf8 headerrel, meg a file is utf8 BOM nélkül, akkor mennie kell.
tehát röviden, mindig minden utf8.
------------------------
Jézus reset téged
- A hozzászóláshoz be kell jelentkezni
Asszittem az összes ilyen kérdés a prog.hu-ra megy... bár ott már nem is nagyon válaszolnak rá, csak megadják ezt a linket: http://web.axelero.hu/lzsiga/ekezet.html
- A hozzászóláshoz be kell jelentkezni
MEGOLDÓDOTT!
Amúgy köszi a linket,tanulságos! Tényleg bocs, kezdő vagyok :-\
- A hozzászóláshoz be kell jelentkezni
Mennyire vagy kezdő? Ha nagyon az elején tartasz mindennek, akkor "én" azt tanácsolom, hogy tanulás céljából mozdulj el a Python felé. Ha a Python alapjai megvannak(tényleg csak az alapok), akkor rá lehet mozdulni a Flask keretrendszerre. Azon kívül, hogy a Flask egy nagyon jó keretrendszer, Python tanulásra is abszolút alkalmas.
Flask: http://flask.pocoo.org/
PostgreSQL: http://www.postgresql.org/
SQLAlchemy: http://www.sqlalchemy.org/
De nem is linkelek tovább, mert van jó néhány dolog ami kelleni fog, de ez az igényeidtől függ. Mint pl. Flask-Migrate: https://flask-migrate.readthedocs.org/en/latest/
Flaskhez ez egy jó alap: https://exploreflask.com/
- A hozzászóláshoz be kell jelentkezni
Kösz a tippet, majd utánanézek!
- A hozzászóláshoz be kell jelentkezni
remek hautu, sub :)
- A hozzászóláshoz be kell jelentkezni