Hozzászólások
Hali!
Tudnatok segiteni abban, hogyan tudnek mysql-bol kiolvasni egy erteket, es betenni ugy egy valtozoba, hogy ne ascii, hanem unicode formatumu legyen?
:roll:
- A hozzászóláshoz be kell jelentkezni
Ha nyomsz egy SET NAMES utf8;-at, akkor a sessionodra ervenyes character_set_connection es character_set_results utf8 lesz. A queryd resultjait pedigy nyilvan ennek megfeleloen kezeled.
- A hozzászóláshoz be kell jelentkezni
Koszi szepen, sikerult.
Meg az lenne a kerdesem, hogy ha
sprintf(query,SELECT * FROM users WHERE nick='%s',utfnick);
es a query-t elküldöm, akkor is utf kodolással keresi?
mert egy ő betus nevre keresek ra, de nem ad vissza result-ot
- A hozzászóláshoz be kell jelentkezni
mysql> SET NAMES utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE DATABASE `petikehc` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> USE `petikehc`;
Database changed
mysql> SHOW CREATE DATABASE `petikehc`;
+----------+-------------------------------------...
| Database | Create Database
+----------+--------------------------------------...
| petikehc | CREATE DATABASE `petikehc` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */
+----------+--------------------------------------...
1 row in set (0.00 sec)
mysql> SHOW VARIABLES like "character_set_%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)
mysql> CREATE TABLE `users` (`login` CHAR(64));
Query OK, 0 rows affected (0.02 sec)
mysql> SHOW CREATE TABLE `users`;
+-------+---------------------------------------...
| Table | Create Table
+-------+--------------------------------------...
| users | CREATE TABLE `users` (
`login` char(64) collate utf8_bin default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin |
+-------+--------------------------------------...
1 row in set (0.00 sec)
[/code:1:82b66afaa0]
... itt gnome alatt mysql query browserben inserteltem egy rekordot...
[code:1:82b66afaa0]
mysql> SELECT u.`login` FROM `users` u WHERE u.`login` RLIKE "ő";
+---------------------------------+
| login |
+---------------------------------+
| Árvíztűrő tükörfúrógép |
+---------------------------------+
1 row in set (0.00 sec)
(hm.. mukodik az rlike utf8 mellett? 4.1.11-1 (sarge))
- A hozzászóláshoz be kell jelentkezni
Hali.
Ezzel se talalja meg sql - ben.
Valojaban az a gondom, hogy egy kliens (java, utf kodolassal) elkuldi
a nevet, es a servernek ( C ) azt ellenoriznie kellene sql adatbazisban.
Ha a nicket atkonvertalom utf - rol ascii-ra akkor ugye ő es ű betuket
nem jol kezeli. :roll: :roll:
U.i.: phpmyadminba kiprobaltam amit irtal es ott jol megtalalta az ő betuset.
hm..most kiirattam fajlba az
sprintf(query,SELECT * FROM users WHERE nick='%s',utfnick);
altal letrehozott query - t, es ennyi volt a fajlba..
SELECT * FROM users WHERE nick=''
Vagy ez lehet azert mert fajlba nem tud normalisan utf stringet irni?
utfnick erteke biztos nem "" mert kesobb hasznalom es ott jo.. :roll:
- A hozzászóláshoz be kell jelentkezni
1.) SQL INJECTION (http://en.wikipedia.org/wiki/SQL_injection, http://xkcd.com/327/)
2.) Az sprintf 0-terminált char * -ot vár. man wprintf
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Az utf8 char*, ezért szeretik.
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
Én a helyedben írnék saját sprintf-et. Én azt csináltam, hogy definiáltam egy %q-t, ami querybiztosan helyettesíti be a stringeket (mysql_real_escape_string-el): myvsprintf(query,SELECT * FROM users WHERE nick='%q',utfnick);
Egyébként meg biztos vagy benne, hogy amit kapsz stringet, az utf8? Szerintem tipikusan itt a hiba, javaslom az iconv-ot.
A query filebamentésekor biztos, hogy nem veszik el. Sokkal valószínűbb, hogy már a query-be se rakja bele (bár nem tudom, ez hogy miért is). Tipp: mentsd le külön az utfnick-et egy fileba, nézd meg hexadump-al. Ha az "ő" helyén két kriksz-krakszot látsz, akkor fáintos.
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
A SET NAMES utf8;
parancsot minden mysql-be lépéskor meg kell ismételnem?
Van esetleg tapasztalatotok a knoda 0.8.3 nevű programban hogyan tudom elérni hogy az utf-8 at szépen mutassa? Nagyon rossz ez az egyiptomi jelzésrendszer… :)
Ubuntu 8.04.
Előre is köszönöm, ha megosztjátok velem esetleges ötleteiteket!
Valek
- A hozzászóláshoz be kell jelentkezni
Senkinek semmi? :(
- A hozzászóláshoz be kell jelentkezni
1) igen.
2) atkonvertalod az adatokat meg a tablat utf-re
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni