02-12-2005, 17:29
|
|
|
חבר מתאריך: 02.12.05
הודעות: 4
|
|
עברית עם PHP, Mysql, PHPMyAdmin
אני משתמש במערכת הבאה:
phpMyAdmin 2.6.4-pl4 (לאחר שעברה שדרוג. הבעה הייתה קיימת גם בגרסה הקודמת)
MySQL 4.1.15-nt
PHP Version 5.0.5
Apache 2.0.55
Windows XP
FireFox 1.5
הבעיה כדלקמן:
ייבאתי נתונים ממסד נתונים של Access ל MySql בעזרת DBToolsManager Proffesional. קיבלתי ב-PHPMyAdmin ג'יבריש ברשימה של שמות הטבלאות (הן היו בעברית..., כמו גם שמות השדות והנתונים עצמם). הכל ייובא בג'יבריש. בדקתי את זה גם עם Query Browser. גם שם הכל בג'יבריש. שיניתי שם של טבלה אחת באופן ידני דרך PHPMyAdmin. ובניתי סקריפט PHP על מנת לקרוא נתונים.
נתונים קריאים ב-PHPMyAdmin או Query Browser אינם קריאים בסקריפט PHP שלי!
נתונים קריאים בסקריפט PHP שלי אינם קריאים בPHPMyAdmin!
אינם קריאים משמע שלא משנה באיזה קידוד אני בוחר אין שום אפשרות להציג אותם כעברית.
ניסיתי את כולם... (windows-1255 iso-8859-8 utf-8 utf-16 utf-7 MacHebrew IBM-862 iso-8859-8-i) עד שהגעתי למסקנה שאין בעיה בייבוא הנתונים או בהצגתם.
למה PHPmyAdmin מציג תווים אחרים מהסקריפט הפשוט שאני כותב?
איך יוצרים אחידות? מה לשנות בסקריפט או ב PHPmyAdmin כדי ששניהם יציגו עברית באותה צורה?
כבר שיחקתי עם MySql Connection Collation וגם עם ה-Collation של הטבלאות.
מצורף הסקריפט שלי שמציג בג'יבריש כל מה שמופיע בעברית בPHPMyAdmin ובעברית כל מה שמופיע בג'יבריש בPHPMyAdmin. אין שום חשיבות לקידוד...
a
$db_host = 'localhost'; // mysql host name
$db_user = 'root'; // mysql username
$db_pass = '********'; // mysql password
$db_name = 'h'; // database name
// Open Connection
$db=mysql_connect($db_host,$db_user,$db_pass) or die('ERROR: cannot connect to MySQL server.');
// Select Database
if (!(mysql_select_db($db_name,$db))) die('Could not select the DB.');
mysql_query ("SET NAMES 'utf-8'"); // tried 'hebrew' / 'hebrew-bin' nothing matters
// Run Query
$sql = "SHOW TABLES FROM $db_name";
$result = mysql_query($sql);
// Check for errors
if (!$result) {
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
// Show tables names
while ($row = mysql_fetch_row($result)) {
$t1 = $row[0];
$t2 = iconv ("windows-1255","utf-8",$t1);
$t3 = iconv ("utf-8","windows-1255",$t1);
echo '<br>t1:'.$t1.'<br>t2:'.$t2. '<br>t3:'.$t3;
}
|