ervan Posted July 16, 2007 Share Posted July 16, 2007 First of all, hello y'all. I'm newbie in web developnent, and i got pure english so sorry for that. Becouse i'm russian (well almost russian, exUSSR anyway) so, i need to use cp1251 charset by default in my base. I read ton of articles (in russian and english, the most useful is http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html), but still have a questions. I downloaded and installed MySql 5.0 + php 5 + apache 2.2 on my local windows machine. When I install mysql (russian version) it promter for charset, I, of course, selected cp1251. Then mysql.exe don't started becouse of path problem, then i typed in my.ini: character-sets-dir="<mysql_proper_path>/MySQL/share/charsets" This problem, solves quickly, by default there(my.ini) is some lines according to charset: default-character-set=cp1251 Some manuals advance to set init-connect="SET NAMES cp1251" but when i typed thet, mysql.exe says: mysql: unknown variable 'init-connect=SET NAMES cp1251' First question is why ? So i skipped that advice; When i firts run mysql.exe and typed: SHOW VARIABLES LIKE 'character_set%'; i got: +--------------------------+---------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------+ | character_set_client | cp1251 | | character_set_connection | cp1251 | | character_set_database | cp1251 | | character_set_filesystem | binary | | character_set_results | cp1251 | | character_set_server | cp1251 | | character_set_system | utf8 | | character_sets_dir | D:\mustdie\prog\MySQL\share\charsets\ | +--------------------------+---------------------------------------+ seems all ok. I createded database, tables and added some data in my native langauge(all using mysql.exe). But when i tryed to access that data from php script, i got unreadable text First i write that script to see character_set* variables: ... $res = mysql_query("SHOW VARIABLES LIKE 'character_set%';"); $rows = mysql_num_rows($res); echo "rows = $rows<br>"; while ($rows > 0) { $fields = mysql_fetch_array($res); $num = mysql_num_fields($res); $i = 0; while($i < $num) { echo "$fields[$i] "; $i++; } echo "<br>"; $rows--; }; ... and i got : rows = 8 character_set_client latin1 character_set_connection latin1 character_set_database cp1251 character_set_filesystem binary character_set_results latin1 character_set_server cp1251 character_set_system utf8 character_sets_dir D:\mustdie\prog\MySQL\share\charsets\ Second question is why in php script i got different variables that from mysql.exe (i runned mysql.exe with parameters: C:\<path>>mysql.exe -u root -p)? OK, I typed before that script mysql_query("set names cp1251;") and results from mysql.exe and php script were the same. seems all ok, but when I tryed add some data from php script to database like that: $name = "\"руссиш текст\""; $data = "\"давай выпьем\""; $query = "insert into posts (name, data, date, time) values ($name, $data, CURRENT_DATE(), CURRENT_TIME());"; that text data was unreadable from mysql.exe intepreter and text data that i added manualy from interpreter were unreadable from php scripts. So this is the main question. What should I do to see readable data from interpreter and php script? note that there is no problem with source file encoding, files has cyrillic encoding. if u want, u cant contact to me fast via icq: 477-844-980 thanks y'all, anyway %) cheers, rain Quote Link to comment https://forums.phpfreaks.com/topic/60209-still-charset-troubles-cp1251/ Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.