22-08-2008, 01:54
|
|
|
|
חבר מתאריך: 02.10.05
הודעות: 2,355
|
|
[מדריך] איך לכתוב קובץ CSV לאקסל במספר שפות
אם תנסו להדפיס מידע בעיברית בקידוד UTF-8 בקובץ CSV ותפתחו אותו באקסל, תראו שהמידע שלכם בעברית מוצג כג'יבריש.
האינסטינקט הראשוני, לפחות שלי, היה להוסיף ב- header-ים הגדרה שהקידוד הוא UTF-8, ונחשו מה? לא עובד.
אחרי זה אמרתי, טוב נו, אם הוא רוצה קידודים רגילים שהם לא Unicode ניתן לו קידוד לא Unicode.
אז עשיתי:
קוד PHP:
$str = mb_convert_encoding($str, "ISO-8859-8", 'UTF-8');
כאשר המשתנה str מכיל את הקובץ CSV.
ופה הגיעה בעיה שניה: האתר עובד גם בעיברית וגם בערבית.. אני חייב להשתמש ב-unicode.
מסתבר שכשאנשים נורמלים אומרים Unicode, הם מתכוונים ל- UTF-8.
כשמיקרוסופט אומרת Unicode, היא מתכוונת ל- UTF-16LE.
קוד PHP:
echo chr(255).chr(254); echo mb_convert_encoding($str, "UTF-16LE", 'UTF-8');
]
פותר את הבעיה, כאשר השורה הראשונה מדפיסה את ה- BOM של הקידוד, והשנייה מדפיסה את הקובץ CSV.
אם משתמשים בדרך הזאת, תראו שהפרדה של פסיקים לא "תתפוס" יותר, הפתרון הוא להשתמש בטאב:
_____________________________________
|