יום שני, 19 בספטמבר 2011

UTF8 ובסיסי נתונים MySQL Database

זה כבר כמה זמן אני מעוניין לכתוב על ניהול נכון של Encoding בבניית אתרי אינטרנט. אנשים נוטים לבצע טעויות רבות ולא מבינים את המשמעות שבין UTF-8 לבין תקני ISO ותקנים של Windows כגון Windows-1255. הבעיות מופיעות בבחירה לא נכונה של Charset הן בבניית העמוד והן בשמירה ב - Database.

לצערי אין לי את הזמן כרגע, אבל אני בוודאי שעוד אחזור לכך ואסביר את כל שלבי ה - Encoding מה - Datbase דרך ה - Webserver וכלה בדף ה- HTML והתצוגה בדפדפן.

כרגע אני משתף קוד קצר ל - mysql שימיר לנו שדות טקסט ששמרנו בהם עברית ב - Charset latin1 ל - UTF8.


ALTER TABLE files ADD COLUMN temp TEXT CHARACTER SET utf8 COLLATE utf8_general_ci AFTER text; -- add the temp column

UPDATE files SET temp=CONVERT(CONVERT(text USING binary) USING utf8); -- convert the data to the new column


ALTER TABLE files DROP COLUMN text; -- drop original column


ALTER TABLE files CHANGE temp text TEXT CHARACTER SET utf8 COLLATE utf8_general_ci; -- rename temp column


Change hebrew / or other charset inside MySQL to UTF-8.