دریافت اطلاعات انگلیسی و فارسی از xml و درج آن در mysql به صورت صحیح
با سلاخ خدمت اساتید.
من یه فایل xml دارم حاوی کلمات انکلیسی و فارسی که میخام اونارو بریزم تو mysql. فایل xml به این صورته.
<TR><TD>a</TD>
<TD>ÍÑÝ Çæá ÇáÝÈÇí ÇäáíÓí¡ ÍÑÝ ÇÖÇÝå ãËÈÊ .</TD>
</TR>
<TR><TD>a bomb</TD>
<TD>ÈãÈ ÇÊãí .</TD>
</TR>
<TR><TD>a la carte</TD>
<TD>(ÏÑ ãæÑÏ ÇÛÐ) ÌÏÇÌÏÇ ÓÝÇÑÔ ÏÇÏå ÔÏå .</TD>
</TR>
<TR><TD>aardwolf</TD>
<TD>(Ì.Ô.) ÝÊÇÑ (Proteles cristata)Èæãí ÌäæÈ æ ãÔÑÞ ÂÝÑíÞÇ .</TD>
</TR>
<TR><TD>aaron</TD>
<TD>åÇÑæä ÈÑÇÏÑ ãæÓí .</TD>
</TR>
<TR><TD>aaronic</TD>
<TD>(.Ô.) íÇåí ÇÒ ÎÇäæÇÏå åæÝÇÑíÞæä ÈäÇã|. hypericum calycinumåÇÑæäí¡ ÇÒ äÓá åÇÑæä¡ ÌÒæ Ñæå ÔíÔÇä ÇÆíä ÏÑÌå ãæÑãä . (mormon)</TD>
</TR>
<TR><TD>ab</TD>
<TD>íÔæäÏ áÇÊíä ÈãÚäí <ÏæÑÇÒ> æ <ÇÒ> æ <ÌÏÇÆí> æ <ÛíÑ> ãÇääÏABuseæ . ABaxial</TD>
</TR>
من اومدم اینو با استفاده از simplXML خوندم و به database اضافه کردم به این صورت:
<?php
try {
$conn = new PDO("mysql: host=localhost; dbname=dic; charset=utf8", 'root', '');
//$conn->exec("set names utf8");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("INSERT INTO dic (word, meaning) VALUES (:word, :meaning)");
$xml = simplexml_load_file("data.xml");
foreach($xml->children() as $child)
{
$stmt->execute(array(
":word" => $child->TD[0],
":meaning" => $child->TD[1]
));
}
} catch(Exception $e) {
echo $e->getMessage();
}
?>
در ضمن باید بگم که collation دیتابیس هم برابر utf8-general-ci قرار دادم (persion و bin) رو هم امتحان کردم.
حالا وقتی میخام اطلاعات رو به این صورت نمایش بدم درست نمایش نمیده.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<table>
<?php
try {
$conn = new PDO("mysql: host=localhost; dbname=dic; charset=utf8", 'root', '');
//$conn->exec("set names utf8");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT word, meaning FROM dic");
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($result as $item){
echo "<tr>";
echo "<td>".$item['word']."</td>";
echo "<td>".$item['meaning']."</td>";
echo "</tr>";
}
} catch(Exception $e) {
echo $e->getMessage();
}
?>
</table>
</body>
</html>
چطور میشه این مشکل رو حل کنم؟:متفکر:
پ.ن: در ضمن من تاپیک پرسشهای تکراری رو خوندم و سایت رو هم جستجو کردم.
نقل قول: دریافت اطلاعات انگلیسی و فارسی از xml و درج آن در mysql به صورت صحیح
$conn = new PDO("mysql: host=localhost; dbname=dic; charset=utf8", 'root', '');
$conn->query("SET CHARACTER SET utf8");
$conn->query("SET CHARACTER_SET_CONNECTION=utf8");
$conn->query("SET NAMES UTF8");
نقل قول: دریافت اطلاعات انگلیسی و فارسی از xml و درج آن در mysql به صورت صحیح
ممنون دوست عزیز. کدهای شما رو هم اضافه کردم ولی جواب نداد.
فکر میکنم چون اطلاعات از قبل به صورت ÍÑÝ Çæá ÇáÝÈÇí ÇäáíÓí¡ ÍÑÝ ÇÖÇÝå ãËÈ هست، همینجوری هم وارد دیتابیس میشه و همینجوری هم از اون خارج میشه و نمیشه کاریش کرد!!؟؟
نقل قول: دریافت اطلاعات انگلیسی و فارسی از xml و درج آن در mysql به صورت صحیح
این خط رو به اول فایل XML اضافه کنید:
<?xml version="1.0" encoding="UTF-8"?>
نقل قول: دریافت اطلاعات انگلیسی و فارسی از xml و درج آن در mysql به صورت صحیح
نقل قول:
نوشته شده توسط
ابوذر محمودی
این خط رو به اول فایل XML اضافه کنید:
<?xml version="1.0" encoding="UTF-8"?>
اضافه کردم بازم درست نشد.