קבצי CSV מוצגים כגיבריש בדפדפן
-
אני מדפיס קבצי CSV בדפדפן דרך שרת PHP
וזה מוצג כג'יבריש
זה מקודד עם UTF8
וכשאני פותח את זה עם תוכנת אקסל זה מוצג בסדר גמור
מה יכול להיות הבעיה? -
@dovid
קובץ מינימלי
אלפון תשפה.csvוזה הקוד:
$csv_file = fopen('uploades/' . $_SESSION['csv_list'], 'r'); while ($row = fgetcsv($csv_file)) { $rows[] = $row; } print_r($rows);
וזה מוצג
-
עכשיו זה לא מדפיס כלום
(יש לקבצים BOM...) -
אפשר גם לנסות להוסיף header שמודיע לדפדפן להתייחס לזה כ UTF8
עין פה ב docs של Mozilla
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type -
גם זה עשיתי...
פרט נוסף שלא ציינתי בפוסט הראשון
יש קבצים שכן מוצגים בסדר,
ואני לא יודע מה גורם לחלק מהקבצים להיראות בסדר וחלק לא.... -
@לעזור-לכולם כתב בקבצי CSV מוצגים כגיבריש בדפדפן:
גם זה עשיתי...
פרט נוסף שלא ציינתי בפוסט הראשון
יש קבצים שכן מוצגים בסדר,
ואני לא יודע מה גורם לחלק מהקבצים להיראות בסדר וחלק לא....זה מעניין, האם כל הקבצים נוצרו ע"י אותו מקור? האם יש קבצים שמתחילים עם מספר או אות שלא בעברית?
-
@Whenever כתב בקבצי CSV מוצגים כגיבריש בדפדפן:
זה מעניין, האם כל הקבצים נוצרו ע"י אותו מקור?
לא, הקבצים שעובדים הם קבצים שאני יוצר מתוכנה מסויימת
@Whenever כתב בקבצי CSV מוצגים כגיבריש בדפדפן:
אם יש קבצים שמתחילים עם מספר או אות שלא בעברית?
כן, והם עובדים..... ויש כאלו שלא מוצגים טוב
-
@לעזור-לכולם כתב בקבצי CSV מוצגים כגיבריש בדפדפן:
@Whenever כתב בקבצי CSV מוצגים כגיבריש בדפדפן:
זה מעניין, האם כל הקבצים נוצרו ע"י אותו מקור?
לא, הקבצים שעובדים הם קבצים שאני יוצר מתוכנה מסויימת
אז הנה התשובה שלך, צריך לבדוק מה שונה בקידוד או מבנה של הקבצים האחרים.
משהו ששמתי לב הקובץ שהעלית הוא לא UTF8 עם BOM אלא ANSI.
-
@Whenever כתב בקבצי CSV מוצגים כגיבריש בדפדפן:
משהו ששמתי לב הקובץ שהעלית הוא לא UTF8 עם BOM אלא ANSI.
מעניין מאוד
כשאני פותח את זה עם VSC זה מציג UTF-8 -
כפי ש@Whenever אמר הקובץ בכלל לא בUTF-8.
אינני מבין איך שניכם פתחתם אותו בVSC ולא שמתם לב שגם הוא מציג ג'יבריש.
VSC לא אומר באיזה קידוד הקובץ, הוא סה"כ מנסה לפתוח בUTF-8, והתוצאות בהתאם.
אתה צריך לקרוא את הקובץ מקידוד windows-1255 או iso-8859-8.
אני לא יודע איך עושים זאת בPHP, מגוגל וGPT הבנתי שאפשר להמיר את השורה אחרי הקריאה ככה:$row = array_map(function($value) { return iconv('Windows-1255', 'UTF-8', $value); }, $row);