Autor Zpráva
HeReTiC
Profil
Nevím, jestli je to dotaz začátečnický nebo pro pokročilé, ale rozhodl jsem se ho dát do této diskuse. Tak tedy:

Mám své stránky (ASP, MS Access) na anglicky mluvícím serveru a z databáze tahám do stránek texty, které jsem do ní vložil lokálně na svém PC (WinXP). Potíž je v tom, že na webu tyto texty mají "oholené" háčky a kroužky (čárky ne).

Příklady: Razení, Upozornení

České texty, které se z databáze netahají (jsou zapsané přímo ve stránkách), jsou v pořádku. Lokálně - na mém počítači - jsou v pořádku VŠECHNY texty.

Na mém webu se mají sami registrovat čeští zákazníci, a po výše uvedených problémech jsem očekával, že jejich jména s diakritikou uložená přes webové rozhraní do databáze a pak z db znovu vytažená budou také nějak zkomolená. Zkusmo jsem zaregistroval uživatele se jménem "ěščřžýáíé" a pak ho přihlásil - k mému překvapení se jeho jméno zobrazilo správně. Stáhnul jsem si tedy db ze serveru k sobě na počítač, abych analyzoval, jak se ten řetězec uložil. Když jsem accessovskou db otevřel, zjistil jsem, že některé znaky řetězce vypadají podivně. Když jsem ho z db zkopíroval do svého oblíbeného texťáku (EmEditor - doporučuji :-) a pokusil se uložit do souboru, dostal jsem hlášku: "This document contains character in Unicode format which will be lost if you save this document as the selected encoding for saving. ..."

Plyne mi z toho několik poznatků a nejasností:

Na daném hostingovém serveru se některé znaky s diakritikou ukládají do db jako Unicode. Pak, když je ASP vytáhnou zpět do stránek, jsou zobrazeny správně. Jenže já bych chtěl mít možnost si db stahovat a lokálně zpracovávat v Accessu. A taky do ní zapisovat (i s diakritikou) a pak db znovu umístit na server.

Poradí mi někdo, jak na to? Třeba jak dočasně přepnout Windows XP, aby se na znaky zobrazovaly a z klávesnice zapisovaly ve formátu Unicode? Nebo nějaké transkódovací programy? Nebo něco úplně jiného?

Předem díky za jakékoli tipy.
quinux
Profil
No v Access databázích se moc nevyznám, ale pokud to jde tak bych celé databázi nastavil kódování utf-8 čímž by se měl snad vyřešit problém.
HeReTiC
Profil
O accessovských databázích Microsoft sděluje jedinou věc, a to, že od verze 2000 se texty v db ukládají ve formátu Unicode. To je vše. Při řešení zmíněného problému mi tato informace ovšem moc nepomohla.
Yuhů
Profil
takže jestli tomu dobře rozumím, tak to funguje, akorát když si stáhneš data k sobě a prohlížíš je v Accesu, tak tam vidíš chyby.

Odstranění háčků při zachování čárek mohou být dvě chyby:
* špatný font -- na to bych se zaměřil
* západoevropské kódování při zadávání vstupu -- Microsoft pak dělá to, že háčky vyhazuje a nahrazuje je znaky bez háčků (totéž dělá při odesílání Outlook, všimni si).

Zkus ten text otevřít nikoli v EmEditoru, ale (překvapivě) v obyčejném Notepadu. Pak uvidíš, jestli se ti to ukládá v Unicode.

Stále si ale myslím, že pes bude zakopaný v nastavení fontu. Zjistíš to takto:
* zdvojují se ti písmenka? => problém je v unicode kódování
* nezdvojují se ani nemizí => problém je v nastavení fontu

> zjistil jsem, že některé znaky řetězce vypadají podivně

můžeš to upřesnit?
HeReTiC
Profil
>takže jestli tomu dobře rozumím, tak to funguje, akorát když si stáhneš data k sobě a prohlížíš je v Accesu, tak tam vidíš chyby
>špatný font -- na to bych se zaměřil

Problém není jenom v zobrazení - chtěl bych taky s tou databází v Accessu lokálně pracovat, a nemůžu zadávat řetězce s diakritikou, protože nejsou v souladu s těmi zadanými z webu.

>západoevropské kódování při zadávání vstupu

Když to zadávám já ve svém lokálním Accessu, tak se snad používá CP 1250. Když se to zadává z angl. webu, tak nevím, ale v každém případě to ten web zase po vytažení z db dokáže správně (tj. tak, jak to bylo zadáno) zobrazit.

Zdvojování písmen jsem nikde nezaznamenal.

Celou situaci z hlediska zobrazování shrnuje tento obrázek:
Yuhů
Profil
Tohle vypadá buďto na chybný font nebo na to, že si Access o textu myslí, že je v kódování západoevropském.

Když tam do té chybné položky dopíšeš třeba ř, napíše se správně, nebo špatně (přeškrtnuté o)? Pokud se napíše špatně, je chyba ve fontu. Pokud se napíše správně, je chyba v kódování. V tom případě proklikej Access (nemám jej) a zkus někde najít nastavení kódování nebo charsetu nebo tak nějak.
HeReTiC
Profil
Přátelé,
díky za tipy. Nakonec jsem celou věc po nejrůznějších útrapách vyřešil, a to konverzí databáze na verzi Access 97, která nepoužívá Unicode. Kromě vyřešení problému se taky velikost databáze zmenšila o více než polovinu. Pokud byste někdo někdy přišel na to, jak to vyřešit se zachováním Unicode, budu rád, když mi dáte vědět.
Toto téma je uzamčeno. Odpověď nelze zaslat.