Topic: koduote importe

Sveiki,

jau dasimusiau ieskodamas slieku... CSV koduote UTF8, pries bet kokia uzklausa atsidarius DB as imetu eilutes

mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');

FireFoxas ismeta importavus CSV

įvedimas į prekių sąrašą sėkmingas!
Padalinys: VC
0>Viln 1>WM459 2>MAHON 1 grindų plytelės 33.3x33.3 3>kv m 4>0.11000
įvedimas į prekių sąrašą sėkmingas!
Rasta 1525 įrašų *.csv faile. Tuščių 0

kaip matote su LT simboliais.. taciau kai uzklausiu paimti is DB irasus, man visos lt raides virsta ? (klaustukais) pvz: "MAHON 1 grind? plytel?s 33.3x33.3    WM459    0.11    kv m" DB irasas irgi su klaustukais, nors:

--
-- Table structure for table `likuciai`
--

CREATE TABLE IF NOT EXISTS `likuciai` (
  `pavadinimas` varchar(80) collate utf8_lithuanian_ci NOT NULL,
  `kodas` varchar(30) collate utf8_lithuanian_ci NOT NULL,
  `matas` varchar(15) collate utf8_lithuanian_ci NOT NULL,
  `likutis` float NOT NULL,
  `modifikuota` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `modifikavo` varchar(35) collate utf8_lithuanian_ci NOT NULL,
  `padalinys` varchar(35) collate utf8_lithuanian_ci NOT NULL,
  `unikalumas` varchar(25) collate utf8_lithuanian_ci NOT NULL,
  PRIMARY KEY  (`unikalumas`),
  KEY `pavadinimas` (`pavadinimas`,`modifikuota`),
  KEY `kodas` (`kodas`),
  KEY `padalinys` (`padalinys`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_lithuanian_ci;

HELP nes jau baigesi viltys.. :(

Re: koduote importe

majklas wrote:

kaip matote su LT simboliais.. taciau kai uzklausiu paimti is DB irasus, man visos lt raides virsta ? (klaustukais) pvz: "MAHON 1 grind? plytel?s 33.3x33.3    WM459    0.11    kv m" DB irasas irgi su klaustukais

O tu nepamiršai, kad atvaizduojant duomenis kažkokioje programoje turi būti siunčiamos ut8 antraštės?

Re: koduote importe

minde wrote:
majklas wrote:

kaip matote su LT simboliais.. taciau kai uzklausiu paimti is DB irasus, man visos lt raides virsta ? (klaustukais) pvz: "MAHON 1 grind? plytel?s 33.3x33.3    WM459    0.11    kv m" DB irasas irgi su klaustukais

O tu nepamiršai, kad atvaizduojant duomenis kažkokioje programoje turi būti siunčiamos ut8 antraštės?

jeigu galima kazkaip placiau ir aiskiau :)
as atvaizduoju nasykleje, PMA kuriame yra <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> kaip ir mano puslapyje.. bet visviena rodo ? ? ? vietoj ąčęėšų..
as gal ta csv faila kazkaip kreivai sumeikinau.. nors per notepad++ rodo encoding -> UTF-8 (per paprasta notepad verciau is ansi i UTF8 saugodamas, ne kitaip is excelio csv buna ansi koduoteje..)

Re: koduote importe

Tu pasidaryk savo script'ą, kuris atvaizduoja duomenis iš DB, kuris naudoja SET NAMES 'utf8', ir kuris siunčia utf8 antraštę.

Jeigu tu žuųri per PMA, tai tu turi išsiaiškinti, kaip tiksliai jis atvaizduoja duomenis. Pavyzdžiui kokią susijungimo koduotę naudoja PMA?

Tavo atveju galioja standartinės utf8 taisyklės:
1) susijungimas su db utf8 (set names);
2) visi naudojami failai (tiek php scriptai, tiek csv) turi būti utf8 koduotėje;
3) duomenys turi būti utf8 koduotėje;
4) db stulpeliai turi būti utf8 koduotėje;

Kažkur padarius klaidą ar neteisingai įvertinus koduotę automatiškai gali viskas susigadinti.

Ieškant klaidos reikia viską patikrinti taip pat jeigu nerandi bėdos nepamiršk parašyt kokią OS naudoji, kokias MySQL/PMA/PHP versijas naudoji.

5 (edited by majklas 2011-06-14 11:33:39)

Re: koduote importe

minde wrote:

Tu pasidaryk savo script'ą, kuris atvaizduoja duomenis iš DB, kuris naudoja SET NAMES 'utf8', ir kuris siunčia utf8 antraštę.

Jeigu tu žuųri per PMA, tai tu turi išsiaiškinti, kaip tiksliai jis atvaizduoja duomenis. Pavyzdžiui kokią susijungimo koduotę naudoja PMA?

Tavo atveju galioja standartinės utf8 taisyklės:
1) susijungimas su db utf8 (set names);
2) visi naudojami failai (tiek php scriptai, tiek csv) turi būti utf8 koduotėje;
3) duomenys turi būti utf8 koduotėje;
4) db stulpeliai turi būti utf8 koduotėje;

Kažkur padarius klaidą ar neteisingai įvertinus koduotę automatiškai gali viskas susigadinti.

Ieškant klaidos reikia viską patikrinti taip pat jeigu nerandi bėdos nepamiršk parašyt kokią OS naudoji, kokias MySQL/PMA/PHP versijas naudoji.

keisciausia kad š raides atvaizduoja, visu kitu ne.. :(
http://likuciai.1000plyteliu.lt/php.php <- visa info is phpinfo..
man speju importo metu kazkaip suvelia tas reiksmes ir importuoja ne pagal set names utf8

include 'library/config.php';
include 'library/opendb.php';
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');
...

...

                echo "0>".$linearray[0]."    1>".$linearray[1]."    2>".$linearray[2]."    3>".$linearray[3]."    4>".$linearray[4]."<br/><br/>";

$query = "INSERT into $likuciai_tbl (pavadinimas,kodas,matas,likutis,modifikuota,modifikavo,padalinys,unikalumas)
        VALUES('$linearray[2]','$linearray[1]','$linearray[3]','$linearray[4]',NOW(),'$aktyvus_vartotojas','$padalinys','$kuriam_unikaluma');";
@mysql_query($query);
    echo "<br/>".$query."<br/>";

                            
if ($linearray[0]==""){ $tuscios++;}
    elseif ($reiksmiu_sk!='5'){ die('<script language="javascript">alert("Blogai suformuotas CSV! Patikrink stulpelių skaičių.")</script>'); } 
        else{                
    $i_prekes ="INSERT IGNORE INTO prekes (pavadinimas, kodas, matas) 
            VALUES ( '$linearray[2]', '$linearray[1]', '$linearray[3]');";
            $ivedam_i_prekes=mysql_query($i_prekes);
        if ($ivedam_i_prekes) {echo "įvedimas į prekių sąrašą sėkmingas!<br/>";}
                        }

viska sumeta normaliai:
http://likuciai.1000plyteliu.lt/Capture2.JPG

Re: koduote importe

radau dziaugsma...

$slektaz="show variables where variable_name like '%character%'";
echo $kurva["Variable_name"] . "|" . $kurva["Value"] . "|\n";

ir pamaciau kad puse connectionu yra latin1..
tai va dasidejau viena eilute prie SET'su:

mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET character_set_connection = utf8');

galejot is karto parasyti kad galima taip pasiziureti connectionus.. nors set_connection darba turetu names padaryti.. bullshitas totalus..

Re: koduote importe

majklas wrote:

galejot is karto parasyti kad galima taip pasiziureti connectionus.. nors set_connection darba turetu names padaryti.. bullshitas totalus..

Galėjai iš karto parašyt, kad nemoki pasižiūrėt kokios koduotės nustatytos. Būtūmėm pasakę, kur žiūrėt (-;

Re: koduote importe

minde wrote:
majklas wrote:

galejot is karto parasyti kad galima taip pasiziureti connectionus.. nors set_connection darba turetu names padaryti.. bullshitas totalus..

Galėjai iš karto parašyt, kad nemoki pasižiūrėt kokios koduotės nustatytos. Būtūmėm pasakę, kur žiūrėt (-;

taigi is karto viska ir nupastinau, tik klausimas kodel atidarant prisijungima nusimusa tas names nustatymas? ir jungiasi kaip latin1.. zodziu sudu sudas tas mysql'as :D

Re: koduote importe

majklas wrote:

taigi is karto viska ir nupastinau, tik klausimas kodel atidarant prisijungima nusimusa tas names nustatymas? ir jungiasi kaip latin1.. zodziu sudu sudas tas mysql'as :D

Iš tavo parašymo tikrai neaišku ko tu nežinai. Juk nepradėsim dabar tau iš karto aiškinti, kaip kompiuterį įjungti. Sekančiuose žinutėse buvo aiškiai parašyta, kad reikia, kad susijungimas būtų utf8. O kokia pas tave sistema, kokios versijos, kaip kas sukonfigūruota yra niekam neaišku ir šiuo atveju turi pats aiškintis. Jeigu nepatinka MySQL'as - naudok kitą DBVS, jų yra daug ir įvairių.