1 (edited by nesvarbu 2006-11-24 14:40:11)

Topic: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

naudoju MySQL 4.1. Per phpMyAdmin vedant lietuviska teksta visos lietuviskos raides automatiskai paverciamos i kodus isskyrus dvi raides š ir ž, ko pasekoje puslapyje naudojant UTF-8 koduote siu raidziu nerodo o naudojant Central European rodo (bet si koduote man netinka). Gal kas zinot kodel?

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

Gal todėl, kad duomenų bazėje nenurodyta UTF8 koduotė?

Kad normaliai veiktu UTF8 reikalinga:
1) duomenų bazėje duomenys turi būti užkoduoti UTF8 koduote;
2) jungiantis prie duombazės reikia naudoti UTF8 koduotę (SET NAMES utf8);
3) atvaizduojant duomenis naudoti UTF8 koduote (html'e meta tag'ai ir t.t.);

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

lenteles naudoja utf8_unicode_ci koduote. nustaciau SET NAMES UTF8. vykdau komanda UPDATE f_news SET title='ššš'. Rezultata toki ir matau ššš, nors kitas raides uzkoduoja taip: &.#.260;&.#.268; (uzdejau taskus kad matytumete pati kdoa). Su nustatymais viskas tvarkoj nes juk kitas 7 lietuviskas raides normaliai pavercia i koda.

4 (edited by nesvarbu 2006-11-24 16:04:19)

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

mysql> select * from f_news;
+----+-------+-------------------------------------------------------+----------+----------+
| id  |   title    | body                                                                                        | postedby | postdate |
+----+-------+-------------------------------------------------------+----------+----------+
|  1 | ÜÜÜÜ  | ×&.#260;&.#268;&.#280;&.#278;&.#302;&.#352&.#370;&.#362;&.#382 | NULL     | NULL     |
+----+-------+-------------------------------------------------------+----------+----------+
1 row in set (0.00 sec)

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

O per kur vykdai komandą? Per phpMyAdmin? Panašu, kad vistik koduotė kažkur nėra utf8 jeigu konvertuoja į HTML'inius kodus.

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

nesvarbu wrote:

Jei kas turit tokia galimybe pasibandykit duodu garantija jums uzkoduos taip pat

Aš turiu daug galimybių ir tikrai taip nėra ;)

parodyk ką rodo tokia užklausa:

SHOW CREATE TABLE lentele;

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

f_news | CREATE TABLE `f_news` (
`id` int(5) NOT NULL auto_increment,
`title` text character set utf8 collate utf8_unicode_ci,
`body` text character set utf8 collate utf8_unicode_ci,
`postedby` varchar(100) character set utf8 collate utf8_unicode_ci default NULL,
`postdate` datetime default NULL,
PRIMARY KEY  (`id`)
ENGINE=InnoDB DEFAULT CHARSET=latin1 |

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

mysql> select * from f_news;
+----+-------+-------------------------------------------------------+----------+----------+
| id  |   title    | body                                                                                        | postedby | postdate |
+----+-------+-------------------------------------------------------+----------+----------+
|  1 | ÜÜÜÜ  | ×&.#260;&.#268;&.#280;&.#278;&.#302;&.#352&.#370;&.#362;&.#382 | NULL     | NULL     |
+----+-------+-------------------------------------------------------+----------+----------+
1 row in set (0.00 sec)

kaip matai title lauke yra tik ššš raides ir jos neuzkoduotos taip kaip kitos lietuviskos raides esancios body lauke.

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

O ką rodo:

SHOW VARIABLES LIKE 'character_set%';

?

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | latin1                                                  |
| character_set_connection | latin1                                                  |
| character_set_database   | latin1                                                  |
| character_set_results    | latin1                                                  |
| character_set_server     | latin1                                                  |
| character_set_system     | utf8                                                    |
| character_sets_dir       | c:\Program Files\MySQL\MySQL Server 4.1\share\charsets/ |
+--------------------------+---------------------------------------------------------+

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

padariau dabar taip, bet vistiek ne taip uzkoduoja:

mysql> set names 'utf8'
    -> ;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8                                                    |
| character_set_connection | utf8                                                    |
| character_set_database   | latin1                                                  |
| character_set_results    | utf8                                                    |
| character_set_server     | latin1                                                  |
| character_set_system     | utf8                                                    |
| character_sets_dir       | c:\Program Files\MySQL\MySQL Server 4.1\share\charsets/ |
+--------------------------+---------------------------------------------------------+
7 rows in set (0.00 sec)

mysql> select * from f_news;
+----+----------+--------------------------------------------------------+----------+----------+
| id | title    | body                                                   | postedby | postdate |
+----+----------+--------------------------------------------------------+----------+----------+
|  1 | ┼Î┼Î┼Î┼Î | ┼šąčęėį&#352ųū&#382 | NULL     | NULL     |
+----+----------+--------------------------------------------------------+----------+----------+
1 row in set (0.00 sec)

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

Gerai, papasakok man per kokią programą jungiesi prie MySQL? ;) Per dosinę mysql kliento programą?

Beto, panaudojęs "SET NAMES utf8" duomenis reikia INSERT'inti iš naujo.

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

nu kad papostint cia duomenis tai jo naudoju MSDOS :), bet tai ar yra skirtumas?
pabandysiu dar namie, papostinsiu uz poros valandu.

Re: UTF-8 nekoduoja autyomatiskai raidziu š ir ž

Aišku, kad yra. Ta programa per kuria dedami duomenys turi tuos duomenis pateikti būtent UTF8 formatu ;)