איפה - בקוד המצורף (json2csv)- צריך להמיר לutf8?
-
@chagold זה בדיוק הפוך.
הקובץ הוא בutf8 וזה מצויין,
אלא שתוכנת אקסל בברירת מחדל לא מצפה לקובץ UTF-8 אלא לANSI כלומר Windows-1255.
כיון שהבעיה באקסל, זה מאה אחוז תקין, רק צריך לפתוח את זה באקסל עם קידוד. הכי פשוט זה בכרטסת נתונים, לייבא קובץ טקסט, שמה בברירת מחדל נדמה לי זה UTF8. -
@chagold זה בדיוק הפוך.
הקובץ הוא בutf8 וזה מצויין,
אלא שתוכנת אקסל בברירת מחדל לא מצפה לקובץ UTF-8 אלא לANSI כלומר Windows-1255.
כיון שהבעיה באקסל, זה מאה אחוז תקין, רק צריך לפתוח את זה באקסל עם קידוד. הכי פשוט זה בכרטסת נתונים, לייבא קובץ טקסט, שמה בברירת מחדל נדמה לי זה UTF8. -
@dovid אני צריך שאנשים יכולים להוריד קובץ מהאתר בלי שיסתבך להם. אז עדיף לעשות קידוד ANSI? וא"כ מה הקוד?
תודה.מצאתי כאן שבאמת שטעיתי, אקסל מכבד UTF-8 בתנאי שיש בהתחלה כותרת BOM (לא מבין מה כתבתי, ראה פה https://en.wikipedia.org/wiki/Byte_order_mark).
אז הנה הקוד מתוקן (שורה 21):var csvFile = '\ufeff'; -
מצאתי כאן שבאמת שטעיתי, אקסל מכבד UTF-8 בתנאי שיש בהתחלה כותרת BOM (לא מבין מה כתבתי, ראה פה https://en.wikipedia.org/wiki/Byte_order_mark).
אז הנה הקוד מתוקן (שורה 21):var csvFile = '\ufeff'; -
למי שתוהה, תו ה-BOM (ובשמה המלא BYTE ORDER MARK) נועד במקור לציין את סדר הבתים שהקובץ משתמש בו כדי להציג מספרים בני 16 או 32 ביטים.
בקידודים UTF-16 ו-UTF-32 אבני הבסיס הם מספרים בני 16 ו-32 ביטים לכן התו הזה נחוץ (בהעדר מידע מבחוץ) בשביל לזהות את סדר הבתים בו הקובץ משתמש.
בנוסף, התו שימושי כדי להבחין בין UTF-16 ל-UTF-32 כי ה-BOM מיוצג בצורה שונה בשני הקידודים
בקידוד UTF-8, אבן הבסיס הוא מספר בן 8 ביטים, שכל המעבדים מייצגים בצורה זהה, לכן אין צורך ב-BOM עבור זיהוי סדר הבתים, (וגם אפשר בקלות לזהות אם קובץ הוא UTF-8 תקין בלי צורך להשתמש ב-BOM), אבל זה יכול להשתמש כסוג של רמז שמדובר (בסבירות גבוה) בקובץ יוניקוד ולא ascii או ansi או משהו אחר
מייקרוסופט אימצו לעצמם נוהג שלפיה כל קובץ בלי BOM מזוהה כ-ANSI, ועם BOM זה מזוהה כיוניקוד
לפעמים כשאין צורך ב-BOM זה יכול גם להזיק אם התוכנה מצפה לקבל ASCII ובלי ה-BOM בטקסט פשוט הרי UTF-8 הוא גם ASCII תקין, וה-BOM מקלקל
במקרה של קובץ CSV עבור אקסל שכולל בתוכו תווים מחוץ לטווח ה-ASCII ה-BOM רק עוזר
הנ"ל מה שהבנתי מתוך הכתבה בויקיפדיה ש@dovid ציין, ומתוך ה-FAQ הזה באתר הבית של תקן יוניקוד
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות