Kodėl CSV faile Excel rodo keistus simbolius
Koduotės painiava, dėl kurios sugadinamos raidės su diakritikais, ir trys būdai ją ištaisyti.
Atidarote CSV programoje Excel, o vardai, tokie kaip Müller, José ar Šarūnas, rodomi su keistais simboliais vietoj raidžių su diakritikais. Euro ženklai ir apostrofai taip pat virsta keistų ženklų grupelėmis. Jūsų duomenims nieko neatsitiko. Excel tiesiog skaito failą netinkama simbolių koduote.
Kas vyksta
Tekstinis failas yra tik baitai, o koduotė yra taisyklė, pagal kurią baitai paverčiami raidėmis. Beveik kiekviena šiuolaikinė sistema CSV failus rašo UTF-8 koduote, kuri tinka bet kuriai kalbai. Windows skirta Excel, kai dukart spustelite CSV, vis dar daro prielaidą, kad naudojama senesnė regioninė koduotė, pavyzdžiui, Windows-1252 arba Lietuvoje Windows-1257, nebent failas prasideda mažu žymeniu, vadinamu baitų tvarkos žyme, arba BOM. Be BOM kiekvienas simbolis, nepriklausantis paprastai anglų abėcėlei, dekoduojamas pagal netinkamą taisyklę, ir kiekviena raidė su diakritiku virsta dviem ar trimis šiukšlių simboliais.
Duomenys nepažeisti. Atidarykite tą patį failą Google Sheets, Numbers ar teksto redaktoriuje, ir jis atrodys tvarkingai.
1 sprendimas: pridėkite BOM
Jei failas yra teisingas UTF-8 ir neteisingai jį rodo tik Excel, perleiskite jį per koduotės taisymo įrankį su įjungta BOM parinktimi. Simboliai nesikeičia, tačiau žymuo nurodo Excel skaityti UTF-8, ir nuo tada failas tinkamai atsidaro dukart spustelėjus.
2 sprendimas: konvertuokite į tikrą Excel failą
.xlsx failas neturi jokio koduotės dviprasmiškumo. CSV į Excel konverteris teisingai nuskaito CSV ir išsaugo darbaknygę, kuri visur atsidaro tinkamai. Jis taip pat išsaugo pradinius nulius pašto koduose ir telefono numeriuose, kuriuos Excel pašalina tiesiogiai atidarydama CSV.
3 sprendimas: importuokite, o ne spustelėkite dukart
Programoje Excel naudokite Data, From Text/CSV ir nustatykite File Origin į 65001: Unicode (UTF-8). Tada Excel nuskaito failą teisingai. Tai veikia, tačiau turite tai prisiminti kiekvieną kartą, todėl pirmi du sprendimai praktiškesni failams, kuriais dalijatės.
Kai sugadintas pats failas
Kartais sugadinti simboliai išsaugomi pačiame faile. Taip nutinka, kai kas nors atidarė UTF-8 failą programoje Excel, pamatė netvarką ir vėl jį išsaugojo. Dabar šiukšlių simboliai ir yra duomenys. Problemą matysite kiekvienoje programoje, ne tik Excel. Koduotės taisymo įrankis turi atkūrimo režimą būtent tokiam atvejui, kai tekstas buvo klaidingai perskaitytas kaip Windows-1252: jis atšaukia dvigubą kodavimą ir atkuria originalias raides. Automatinis režimas šį atvejį atpažįsta daugumoje failų. Jei failas buvo sugadintas perskaičius jį kita regionine koduote, pavyzdžiui, Windows-1257, šiuo režimu nepasikliaukite ir, jei įmanoma, eksportuokite duomenis iš šaltinio iš naujo.
Greita diagnostika
| Ką matote | Tikėtina priežastis | Sprendimas |
|---|---|---|
| Neteisingai tik Excel, kitur tvarkingai | Trūksta BOM | Pridėkite BOM arba konvertuokite į .xlsx |
| Neteisingai kiekvienoje programoje | Failas išsaugotas po klaidingo nuskaitymo | Atkurkite dvigubą kodavimą |
| Klaustukai ar kvadratėliai | Failas išsaugotas sena Windows koduote | Konvertuokite iš Windows-1252 į UTF-8 |
Kaip to išvengti
- Eksportuodami iš Excel, rinkitės CSV UTF-8, o ne paprastą CSV.
- Eksportuodami iš kitų sistemų Excel naudotojams, įtraukite BOM, jei tokia parinktis yra.
- Niekada iš naujo neišsaugokite CSV, kuris atrodo sugadintas. Pirmiausia ištaisykite koduotę.