Article View: pl.comp.lang.asm
Article #2620Re: Konwerter txt do UTF 8
From: Bogdan (bogdro)
Date: Sat, 26 Mar 2022 16:03
Date: Sat, 26 Mar 2022 16:03
57 lines
3968 bytes
3968 bytes
W dniu 25.03.2022 o 22:47, Kamil pisze: > Użytkownik "Bogdan (bogdro)" napisał: > >> 1) czytasz plik znak po znaku (albo od razu cały plik do bufora w >> pamięci, przez który potem przechodzisz znak po znaku), > >> 2) jeśli odczytanym znakiem nie trzeba się zajmować, przepisujesz go >> do bufora wyjściowego bez zmian, > >> 3) jeśli odczytany znak trzeba zmienić, zapisujesz do bufora >> wyjściowego "to, co trzeba", > >> 4) do pliku zapisujesz bufor wyjściowy jako całą zawartość, bez >> przeskakiwania co gdzie trzeba zmienić. > > Opisałeś dokładnie to samo co ja wcześniej. To jest proste i ładnie > działa dla jednego znaku. Natomiast potencjalnie w pliku tych znaków > jest 18. Procedura podczas jednego przebiegu wyszukuje jeden znak. Nie > może więcej, bo zmienią się liczniki. Nie wiem, czy opisałem to > zrozumiale. Jeśli by procedura mogła szukać wszystkich znaków trzeba > by było wprowadzić zmienne zawierające wartości liczników, korygowane > po każdym znalezionym znaku. To skomplikowane i niepewne. > > Pzdr Tak, opisałeś zrozumiale. Tzn. wiem, o jaki problem chodzi. Tyle, ile rozumiem, to to, że masz bufor z danymi z pliku, zmieniasz znak na encję HTML, ale to powoduje "przesunięcie" się pozostałych znaków z pliku, więc musisz szukać pod innymi numerami. Tak by to było, gdyby używać jednego i tego samego bufora na wejście i wyjście i gdyby przerabiać jedną literę na raz. Ja zaś proponuję 2 OSOBNE bufory. Pierwszy, wejściowy, zawiera odczytane dane z pliku (lub po prostu czytasz ten plik na bieżąco). Chodzisz w nim znak po znaku. Jak znajdziesz znak, który trzeba zamienić (jeden z 18), to do bufora wyjściowego zapisujesz podmienioną wersję, podbijasz indeks/wskaźnik/licznik wyjściowy o 6 (długość encji HTML), a wejściowy - ciągle o 1. Ma to, według tego pomysłu, wyglądać mniej-więcej tak: wejście: aąbcć indeks do bufora/pliku wejściowego: 0, 1, 2, 3, 4, 5 wyjście: a&#AAA;bc&#AAA; indeks do bufora/pliku wyjściowego: 0, 1, 7, 8, 9, 15 No i drugą istotną ideą jest to, że każdy przeczytany znak porównujesz z 18 wzorcami i w związku z tym od razu generujesz kompletny wynik, zamiast najpierw zamieniać wszystkie "ą", potem wszystkie "ć" itd., bo to faktycznie oznacza problemy z indeksami, cofanie się w buforze, zamazywanie sobie samemu danych itd. -- Pozdrawiam/Regards - Bogdan (GNU/Linux & FreeDOS) Kurs asemblera x86 (DOS, GNU/Linux): http://bogdro.evai.pl Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32 www.Xiph.org www.TorProject.org Soft(EN): http://bogdro.evai.pl/soft
Technical Details
Message-ID:
<t1ndg2$tgp$1@gioia.aioe.org>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!feeder1.feed.usenet.farm!feed.usenet.farm!aioe.org!+vFK3/I8+3z23WBPYGBz7g.user.46.165.242.75.POSTED!not-for-mailReferences:
<62388b93$0$481$65785112@news.neostrada.pl> <t1ceqt$kd0$1@gioia.aioe.org> <6239dcd8$0$492$65785112@news.neostrada.pl> <t1dc1f$1hpj$1@gioia.aioe.org> <623a42c7$0$464$65785112@news.neostrada.pl> <623b0844$0$493$65785112@news.neostrada.pl> <623c6b4b$0$465$65785112@news.neostrada.pl> <t1i94p$1ijs$1@gioia.aioe.org> <623e3867$0$480$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!feeder1.feed.usenet.farm!feed.usenet.farm!aioe.org!+vFK3/I8+3z23WBPYGBz7g.user.46.165.242.75.POSTED!not-for-mail From: "Bogdan (bogdro)" <bogdan@poczta.gazeta.pl> Newsgroups: pl.comp.lang.asm Subject: Re: Konwerter txt do UTF 8 Date: Sat, 26 Mar 2022 17:03:02 +0100 Organization: Aioe.org NNTP Server Message-ID: <t1ndg2$tgp$1@gioia.aioe.org> References: <62388b93$0$481$65785112@news.neostrada.pl> <t1ceqt$kd0$1@gioia.aioe.org> <6239dcd8$0$492$65785112@news.neostrada.pl> <t1dc1f$1hpj$1@gioia.aioe.org> <623a42c7$0$464$65785112@news.neostrada.pl> <623b0844$0$493$65785112@news.neostrada.pl> <623c6b4b$0$465$65785112@news.neostrada.pl> <t1i94p$1ijs$1@gioia.aioe.org> <623e3867$0$480$65785112@news.neostrada.pl> Mime-Version: 1.0 Injection-Info: gioia.aioe.org; logging-data="30233"; posting-host="+vFK3/I8+3z23WBPYGBz7g.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 X-Notice: Filtered by postfilter v. 0.9.2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit