Pereiti prie turinio

CSV importas i MySql per php. UTF8 bedos


Rekomenduojami pranešimai

Sveiki, gal kas iš labiau patyrusiu galėtu patarti. bandau pasidaryti simple scripta duomenų iš csv irašymui į duomenų bazę, tačiau lietuviškų raidžių neimportuoja

Kad mažiau būtu klausymų: Taip csv koduotė teisinga, UTF8, jeigu tiesiai per phpMyadmin darau importas viskas susikelia tvarkingai, bet ne per scripta.

 

naudoju scripta:

<?PHP
/*
I want to learn programing... Trying..
*/

//Upload file
if(is_uploaded_file($_FILES['file']['tmp_name'])){

//Connect to the database
$dbhost = 'localhost';
$dbuser = 'xx';
$dbpass = 'xx';
$dbname = 'xx';
$link = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql server');
mysql_select_db($dbname);

//Delete old data
mysql_query('TRUNCATE TABLE user;');
mysql_query('TRUNCATE TABLE str_user;');

//Process the CSV file
$handle = fopen($_FILES['file']['tmp_name'], "r");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
	$att0 = mysql_real_escape_string($data[0]);
	$att1 = mysql_real_escape_string($data[1]);
	$att2 = mysql_real_escape_string($data[2]);

	$sql = "INSERT INTO `xx` (
				`xx` ,
				`xx` ,
				`xx` 			
				)
				VALUES ('" . $att0 . "', '" . $att1 . "', '" . $att2 . "')";
	mysql_query($sql);
}
mysql_close($link);
echo "CSV file successfully imported.";
echo "<br>";
$message="xx";

echo $message;
}
else{
die("You shouldn't be here");
}
?>

Ikelus csv eilute su Lt simboliais rodo: 90ž, turėty rodyti: ąčęėįšųū90ž

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pabandyk patikrinti koduotę pačiam PHP skripte su mysql_client_encoding() ir jeigu reikia, pakeisk į UTF8 su

mysql_set_charset('utf8', $link);

 

Šitas variantas kaip ir gelbsti, sąlyginai...

be mysql_set_charset() rezultatas - AngelÄ—Ä…Äęėįšųū

su mysql_set_charset() rezultatas - Angelėąčęėįšųū

 

O bet tačiau, mano csv eilutėje yrašas yra - ąčęėįšųžAngelėąčęėįšųū

 

Tai išvada kad importuojant nukerpa visus lietuviškus simbolius pradžioje, bet po normalaus simbolio jau palieka.

 

Gal kas minčių kokių?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Labai įdomus variantas :)

 

Patikrinau ir tu teisus - fgetcsv() ignoruoja nestandartinius simbolius stulpelio pradžioje. Pabandyk viso skripto pradžioje nustatyti bendrą lokalizaciją:

setlocale(LC_ALL, 'lt_LT.UTF-8');

 

//PHP 5.3
"Angelėąčęėįšųū"

//PHP 5.3 su setlocale()
"ąčęėįšųžAngelėąčęėįšųū"

//PHP 5.4
"ąčęėįšųžAngelėąčęėįšųū"

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Labai įdomus variantas :)

 

Patikrinau ir tu teisus - fgetcsv() ignoruoja nestandartinius simbolius stulpelio pradžioje. Pabandyk viso skripto pradžioje nustatyti bendrą lokalizaciją:

setlocale(LC_ALL, 'lt_LT.UTF-8');

 

//PHP 5.3
"Angelėąčęėįšųū"

//PHP 5.3 su setlocale()
"ąčęėįšųžAngelėąčęėįšųū"

//PHP 5.4
"ąčęėįšųžAngelėąčęėįšųū"

 

Ne gaila set locale nepadeda. Na ka viena iseitis php atsinaujinti nes dabar 5.2 naudoju..

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jeigu turi galimybę pakeisti savo CSV failo formatą, tai tiesiog kiekvieno stulpelio reikšmę įdėk į kabutes ir problemos nebeliks. Kitas variantas yra vietoj fgetcsv() tiesiog pačiam skaityti failą ir doroti duomenis.

 

Ačiū.

 

Bandysiu su "" padirbėti, kadangi csv faila konvertuoti reikia iš excelio o paskui i sql isikelti, tai nerą problemu VB scripta paleisti excelyje kad sudeliotu kabutes.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...