You are here: PSPad forum > České diskuzní fórum > Nelze otevřít soubor ve správné znakové sadě

Nelze otevřít soubor ve správné znakové sadě

Goto Page: Previous1 2 3

#21 Re: Nelze otevřít soubor ve správné znakové sadě

Posted by: pspad | Date: 2013-07-16 11:08 | IP: IP Logged

MirekSv:
Tak mám další soubor, který se mi nedaří otevřít v UTF-8 kódování.
Nešlo by s tím něco dělat?

viz cache.svrcek.cz

PSPad pouziva systemovou funkci na dekodovani UTF-8. Muzu se podivat, zda to nejde udelat jeste nejak jinak.

Options: Reply | Quote | Up ^


#22 Re: Nelze otevřít soubor ve správné znakové sadě

Posted by: vbr | Date: 2013-07-16 17:28 | IP: IP Logged

MirekSv:
Tak mám další soubor, který se mi nedaří otevřít v UTF-8 kódování.
Nešlo by s tím něco dělat?

viz cache.svrcek.cz

Zdravim,
problemem je zrejme opet "pokrocily" znak unicode nad zakladni plan BMP:

U+1F41E LADY BEETLE - radek 83027, znak 19
<name>

Options: Reply | Quote | Up ^


#23 Re: Nelze otevřít soubor ve správné znakové sadě

Posted by: MirekSv | Date: 2013-07-16 19:21 | IP: IP Logged

Díky za reakci, Firefox ve Windows tyhle "pokročilé" znaky umí zobrazovat, takže lze najít cestu, jak s těmito znaky pracovat i ve Windows. A bylo by dobré, kdyby se s tím uměl nějak poprat i PsPad.

Options: Reply | Quote | Up ^


#24 Re: Nelze otevřít soubor ve správné znakové sadě

Posted by: pspad | Date: 2013-07-16 19:32 | IP: IP Logged

Firefox, jako multiplatformni projekt zrejme pouziva vlastni funkce a za druhe on jen zobrazuje, nemusi nic editovat.
Opravdu nevim, zda to pujde, protoze PSPad pracuje s 2-bajtovym unicode kodovanim, to znamena se znaky do 65535.

Edited 1 time(s). Last edit at 2013-07-16 19:35 by pspad.

Options: Reply | Quote | Up ^


#25 Re: Nelze otevřít soubor ve správné znakové sadě

Posted by: myf | Date: 2013-07-17 09:08 | IP: IP Logged

Tak, - 'LADY BEETLE' (U+1F41E) je už čtyřbajtový znak
- Firefox pro jeho vykreslení fallbackuje na font "Segoe UI Symbol" (pokud je nainstalován, což je ve Win 7+ defaultně a v XP při doinstalování nějakých divokých MS softů). A třeba Chrome takhle nefallbackuje. Nejspíš to bude tím, že Firefox v sobě tyhle metainformace o fontech už má nadrátované nebo pokud už jsou ve výchozím ('nedostatečném') fontu obsažené tak je umí korektně využít.

Options: Reply | Quote | Up ^


#26 Re: Nelze otevřít soubor ve správné znakové sadě

Posted by: MirekSv | Date: 2013-07-17 15:21 | IP: IP Logged

Když si soubor otevřu v Notepadu++, tak se mi místo toho znaku objeví prázdný čtvereček (tedy znak neumí správně zobrazit) a když soubor upravím a uložím, tak jeho hexadecimální kód zůstane nezměměný. Tedy když ho neumí zobrazit, tak s ním ale pracuje správně, jako s platným znakem UTF-8 a takto ho jako správný znak zase uloží. Takže takováto funkčnost by byla ideální.

Options: Reply | Quote | Up ^


#27 Re: Nelze otevřít soubor ve správné znakové sadě

Posted by: pspad | Date: 2013-07-17 15:40 | IP: IP Logged

To by Notepad++ musel umet pracovat se 4-bajtovým unicode kodovanim. Jinak by nemohl ten znak ani udrzet v pameti - 4 bajtový znak do 2 bajtu nedostanes. A kdyby to umel, pak by jej dovedl i zobrazit. Takze nevim, jak to Notepad++ dela.

Options: Reply | Quote | Up ^


#28 Re: Nelze otevřít soubor ve správné znakové sadě

Posted by: vbr | Date: 2013-07-17 18:27 | IP: IP Logged

pspad:
To by Notepad++ musel umet pracovat se 4-bajtovým unicode kodovanim. Jinak by nemohl ten znak ani udrzet v pameti - 4 bajtový znak do 2 bajtu nedostanes. A kdyby to umel, pak by jej dovedl i zobrazit. Takze nevim, jak to Notepad++ dela.

Zobrazeni nejspis zalezi na dostupnych fontech a pripadne se misto chybejicich znaku pouzije nahrazovaci obdelnik - to dela i PSPad.

Zda se ale, ze problem neni ani v internim formatu pspadu, ten totiz i zmineny znak nad BMP ulozi a pri opetovnem nacteni v PSPadu spravne zobrazi jakoby v nastavenem kodovani utf8 - pri prekopirovani do jineho editoru s sirsim fontem pres schranku se spravne zobrazi "lady beetle", prime otevreni takoveho "pspadiho" souboru ale ostatni editory nezvladaji (stejne jako pspad spravne neotevre jejich - se znakem nad FFFF).

Pokud ulozim v pspadu a notepadu++ text: a[lady beetle]b jako utf-8 bez BOM, pouzita hexadecimalni sekvence mezi znaky "a" a "b" se lisi.
notepad++ standardne zakoduje primo u+1f41e do utf-8 jako F0 9F 90 9E
pspad zde myslim nekorektne pouzije
ED A0 BD ED B0 9E
coz odpovida utf-8 zakodovani surogatu:
D83D DC1E
ktere predstavuji surogatovou verzi onoho vychoziho u+1f41e v utf-16.

Zda se tedy, ze pspad interne pracuje s utf-16 vcetne surogatu a umi tedy nejak zpracovat i znaky nad BMP, pouzije ovsem nestandardni postup pri ukladani i otevitrani - poklada surogaty za bezne znaky a tak je i jednotlive zakoduje (takze ve "svych" souborech je schopen tyto "pokrocile" znaky i spravne nacist).

Resenim by bylo pri ukladani identifikovat surogatove pary, prevest je na odpovidajici znaky unicode a ty poslat k zakodovani (napr. pro utf-8 nebo utf-32; utf-16 by snad melo byt automaticky v poradku);
pri nacitani by pak bylo treba najit znaky naf U+FFFF, prekodovat je pomoci surogatu a predat je internimu utf-16.
(srov napr. vzorce
www.russellcottrell.com )

Nevim, nakolik jsou podobne upravy interniho prekodovani mozne, pripadne nejde-li o uzavrene knihovny.

zdravim,
vbr

Options: Reply | Quote | Up ^


Goto Page: Previous1 2 3





Editor PSPad - freeware editor, © 2001 - 2024 Jan Fiala, Hosted by Webhosting TOJEONO.CZ, design by WebDesign PAY & SOFT, code Petr Dvořák, Privacy policy and GDPR