Article View: pl.comp.lang.asm
Article #2622Re: Konwerter txt do UTF 8
From: Bogdan (bogdro)
Date: Sun, 27 Mar 2022 11:17
Date: Sun, 27 Mar 2022 11:17
68 lines
3894 bytes
3894 bytes
W dniu 26.03.2022 o 17:38, Kamil pisze: > Użytkownik "Bogdan (bogdro)" napisał: > >> 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. ... > > Mam dwa bufory, jeden wejściowy i drugi wyjściowy. I chodzi o to, że > jeśli przeszukam bufor wejściowy jednym znakiem i zapiszę do bufora > wyjściowego to muszę dla procedury przeszukiwania wejścia kolejnym > znakiem i jego zapisywania do wyjścia ustawić odpowiednio adresy. A > skąd ma program "wiedzieć na jakiej pozycji znajduje się ten aktualnie > znaleziony i zapisywany znak? Chyba, że czegoś nie rozumiem. > Pogłówkuję jeszcze i może mi się rozjaśni. Póki co jedynym wyjściem > wydaje mi się wbudowanie w program kolejnej procedury ReadFile i > kolejnego zestawu buforów. > > Pzdr I to jest właśnie to, co poruszyłem w mojej "drugiej istotnej idei": przeszukujesz bufor wejściowy znak po znaku, ale po JEGO znaku, a NIE po znaku, który przerabiasz (tj. "ą", "ć", ...). Jeśli przerabiasz najpierw wszystkie "ą", potem wszystkie "ć", potem "ę" itd., to faktycznie tworzy to problemy, o których obaj mówimy - jak "wiedzieć", gdzie teraz zapisać wynik. Ja zaś proponuję coś, co można by zapisać pseudokodem: odczytać plik wejściowy do bufora input i = 0; // indeks do bufora wejściowego o = 0; // indeks do bufora wyjściowego while i < długość input if input[i] = 'ą' output[o] = "&#XXX;"; o = o + 6; else if input[i] = 'ć' output[o] = "&#XXX;"; o = o + 6; ... else if input[i] = 'Ż' output[o] = "&#XXX;"; o = o + 6; else output[o] = input[i]; o = o + 1; i = i + 1; end while zapisać bufor output do pliku wyjściowego Dzięki takiemu podejściu nie musisz za każdą nową literą zaczynać znów zapisywać do output i uważać, pod jaki adres zapisujesz (tj. pamiętać, ile zmienionych liter było już do tej pory). -- 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:
<t1ph5b$qu7$1@gioia.aioe.org>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!news.uzoreto.com!aioe.org!TLcxddGRwVZnEr5CvGLzqQ.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> <t1ndg2$tgp$1@gioia.aioe.org> <623f41a8$0$479$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!2.eu.feeder.erje.net!feeder.erje.net!news.uzoreto.com!aioe.org!TLcxddGRwVZnEr5CvGLzqQ.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: Sun, 27 Mar 2022 13:17:43 +0200 Organization: Aioe.org NNTP Server Message-ID: <t1ph5b$qu7$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> <t1ndg2$tgp$1@gioia.aioe.org> <623f41a8$0$479$65785112@news.neostrada.pl> Mime-Version: 1.0 Injection-Info: gioia.aioe.org; logging-data="27591"; posting-host="TLcxddGRwVZnEr5CvGLzqQ.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