
Ukládání v Notepadu vs PSPadu
Zdravím všechny.
Mám textový soubor, který uložím v PSPadu. Když ho přeuložím v Notepadu, má o nějaké bajty navíc. Když ho znova přeuložím v PSPadu, má zase původní velikost. Když se na oba soubory podívám v PSPadu, vypadají stejně - DOS, kódování UTF-8, při zobrazení netisknutelných znaků vypadají oba soubory shodně. Co tedy navíc (nebo jinak) ukládá Notepad?
Jde mi o to, že něco programuji v Lazarusu a používám INI soubor. Vše mi funguje OK do té doby než INI uložím v notepadu. Program INI sice načte ale obsah jako byl prašivý :) Sice tam je ale program to vyhodnotí jako by tam nebyl. Jakmile INI soubor přeuložím (beze změny) v PSPadu, program funguje tak jak má.
PSPad vkládá do UTF-8 tzv. BOM (begin order mark) bajty, které identifikují kódování. Pro UTF-8 je možné to vypnout v nastavení programu / Program 2
Developer build 5.x má předělanou práci s kódováním, už sám detekuje, zda soubor BOM obsahuje nebo ne, umožnuje uložit s BOM nebo bez něj apod.
Díky za odpověď. Měl jsem to (BOM) v PSPadu vypnuto. Proto byly PSPadové texťáky menší než Notepadové.
Nicméně to neřeší můj problém. Po zapnutí BOM v PSPadu mi Lazarus nepřežvýkne INI soubor.
Nevíte někdo náhodou, zda se to dá nějak v Lazarusu ošetřit?
BOM nepoužívaj, vyhneš sa podobným problémom.
Pre upresnenie, BOM je trojbajtová značka na začiatku súboru. Nájdeš ju tam napríklad ak si prepneš zobrazenie na nejaký hexa view.
No, já BOM nepoužívám. Pokud potřebuji editovat INI soubor, používám PSPad.
Jde o to, že existuje možnost, že ten INI soubor budou editovat koncoví uživatelé. A pokud to udělají v notepadu, budou mít problém...
Lazarus používá pro INI UTF-8, ale nechce BOM (podobne je to s weby a PHP). Notepad jej tam vklada natvrdo, proto ti to rozhodi.
pokud nepotrebujes pouzivat v INI diakritiku, je to jedno, protoze ANSI i UTF-8 budou stejne. Rozdil je az v ve znacich s diakritikou.
Tohle v Lazarovi nezmenis, jde o to, jak maji praci s INI implementovanou. Ale mohli by tam mit nejakou property encoding, kterou bys rekl, ze to je nebo neni UTF-8
Podle mě by se to při vynaložení nějakého úsilí změnit dalo. Muselo by se zasáhnout do zdrojového textu, který je k dispozici (stačilo by přece ignorovat znak BOM). Nejvíc úsilí samozřejmě bude vyžadovat nalezení vhodného místa, kam zasáhnout. Pokud je možné zvolit user encoding, bude to nejjednodušší.
Jasne, ze by se to dalo resit upravou systemoveho zdrojaku. Ale musis na to myslet a kazdou dalsi verzi Lazara opravovat. Proto se takovym upravam, pokud to jde, radeji vyhybam. Za pul roku uz si na to nevzpomenes a problem je na svete.
Nie begin, ale byte order.
Pokud jde o načítání souborů, tak jsem s lazarem bojoval tak dlouho, až jsem dospěl do fáze, že soubor načítám binárně a sám si ho rozparceluju. Neni to tak pohodlné, jako textfile, ale mám alespoň nad ním plnou kontrolu. Nebyl to problém INI, ty mám vyřešené jinak, ale právě souborů s diakritikou, kde se mi prostě nepodařilo lazarus přesvědčit, že má načítat háčky a čárky.