Autor Zpráva
quiet_user
Profil
Ahoj,

mám formulář, do kterého lidi zadávají zdroj. kód, který ukládám do db a znovu vypisuji. Součástí je i počítání znaků. Rád bych také zjistil velikost těchto kódů, lze to spočítat ze znaků?
Nebo mám počítat ještě něco? Jde o zdrojové kódy v jazyce HTML. Děkuji za odpověď.
Radovan789
Profil *
Jestli se jedná o HTML tak ano lze to spočítat podle počtu znaků jedná se totiž o text v DOS nebo ASCII.
Radovan789
Profil *
* ANSI
quiet_user
Profil
Ovšem, teď jsem to zkoušel manuálně. Vzal jsem nějaký index.html, vzal jeho kód a jeho velikost. Porovnal jsem to s počtem znaků a obě čísla se lišila.
Radovan789
Profil *
Otevři si poznámkový blok a vlož do něj nějaký text, potom to udělej podruhé a velikost bude stejná.
Radovan789
Profil *
Mělo by ti vyjít že 1 znak = 1 bajt
Keeehi
Profil
quiet_user:
Záleží na tom, o jaká písmenka se jedná a v jakém kódování je ten soubor uložen. Třeba soubor s obsahem "abcčdď" bude v kódování windows-1250 zabere 6 bajtů, v utf-8 zabere 8 bajtů, Protože na uložení písmenek č a ď jsou potřeba dva bajty.
Davex
Profil
quiet_user:
Počet spočítaných znaků je menší nebo větší než celková velikost? Není náhodou menší přesně o počet řádků v souboru?

Asi také bude záležet na tom, jak počítáš znaky - mezery a konce řádků zabírají místo také.
AM_
Profil
Radovan789:
text v DOS
coto?

počet znaků v unicode může být menší než celková velikost souboru (některé znaky zabírají více bytů), takže pokud máš text v unicode, odpověď je ne, pokud v jakémkoli kódování s konstantní délkou znaku, odpověď je ano.
Jinak ae obecně mnohem větší problém bývá spočítat počet znaků, protože se musí data projít a vyhodnotit, kde jsou znaky proměnné délky, kdežto velikost dat v bytech je většinou programu známá a tedy ji stačí odněkud přečíst.
quiet_user
Profil
AM:
Mohl bych si tedy dovolit uvádět, že 1 znak = 1 bajt a tímto to i definovat a uvádět. Tento soubor je velký přibližně xx kb?

Davex:
Myslím všechny znaky, včetně mezer.
Yur4Y
Profil
Nešlo by jednoducho použiť strlen('text'), čo by vrátilo veľkosť textu v bajtoch?
quiet_user
Profil
Chci tam uvést alespoň orientační hodnotu, taky si myslím, že by to šlo a pak to podmínkama dát do přijatelnější hodnoty, jako např. kb. Teď jde o to, jak velký průšvih to bude.
Yur4Y
Profil
Malo by to byť úplne presné.
Joker
Profil
quiet_user:
Mohl bych si tedy dovolit uvádět, že 1 znak = 1 bajt a tímto to i definovat a uvádět.
Obecně to není pravda. Jak budou znaky reprezentované v paměti (respektive jaký číselný kód v paměti odpovídá jakému znaku) určuje kódování.
Například v UTF-16 má každý znak dva bajty. V UTF-8 může jeden znak zabírat 1-4 bajty (pokud jde o text v češtině, tak 1-2 bajty)

Yur4Y:
Nešlo by jednoducho použiť strlen('text'), čo by vrátilo veľkosť textu v bajtoch?
Otázka jestli to je správně. Zamýšlené chování funkce strlen myslím je, že má vracet počet znaků.
quiet_user
Profil
Mno děkuji za reakce, není to teď prioritou projektu, nejspíš vše tedy převedu na bajty a vydělím, abych dostal něco řikající cifru. Zatím děkuji. Kdyby snad někdo věděl více, díky za další info.
DoubleThink
Profil *
Joker:
Otázka jestli to je správně. Zamýšlené chování funkce strlen myslím je, že má vracet počet znaků.
Zamýšlené chování strlen je vracet počet bajtů od začátku řetězce po první \0. Což se přesně děje, pokud nějaký ocas na serveru nezapne mbstring overloading.
quiet_user
Profil
DoubleThink:
takže se to dá použít jako velikost v bajtech? :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0