05-03-2012, 22:12
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
אני חושב שהבעיה קיימת בהגדרות של החיבור למסד הנתונים. זה המצב שאני רואה:
אתה מקבל מידע (כמו טקסט בעברית) בקידוד שהגדרת לצד הלקוח, אבל אתה מכניס את המידע למסד הנתונים בקידוד אחר, אני משער שזה ISO-8859-1 (או המקביל cp1251).
אתה לא יודע שאתה מכניס את המידע למסד הנתונים בקידוד אחר, כי זו פעולה שמתבצעת באופן אוטומאטי, אך אתה יכול לשנות את קידוד היעד שלה בעזרת השאילתא "SET NAMES".
לכן יכול להיות מצב שאתה מקבל מידע בקידוד UTF-8, וה-DBMS (במקרה שלך זה MySQL) ממיר את המידע ל-ISO-8859-1, ואז לא משנה באיזה קידוד תנסה לייצג את המידע - אתה לא תצליח לראותו בעברית, כי המידע אבד במהלך ההמרה. תראה:
ציטוט:
Example: Suppose that column1 is defined as CHAR(5) CHARACTER SET latin2. If you do not say SET NAMES or SET CHARACTER SET, then for SELECT column1 FROM t, the server sends back all the values for column1 using the character set that the client specified when it connected. On the other hand, if you say SET NAMES 'latin1' or SET CHARACTER SET latin1 before issuing the SELECT statement, the server converts the latin2 values to latin1 just before sending results back. Conversion may be lossy if there are characters that are not in both character sets.
|
שלקחתי מהעמוד: http://dev.mysql.com/doc/refman/5.0...connection.html
תראה גם את האשכול שפתחתי על קידוד אחיד במערכת: http://www.fresh.co.il/vBulletin/sh...ad.php?t=458692
|