image/svg+xml

» Poradna » Programy

C# - kodovani obsahu souboru

Zobrazit bez stromu  |  nových odpovědí: 5/5
 |   |  Microsoft Windows 7 Chrome 26.0.1410.64  |  [217.112.166.---]

Dobry den,snazim se nacist binarni soubor pomoci aplikace, kterou programuji v c#. Problem je v tom, ze kdyz pak prochazim znak po znaku to co nactu, tak mi to neodpovida tomu, co je ve skutecnosti v souboru ulozene. Zjistil jsem, ze se to tyka znaku, ktere maji hodnotu ASCII kodu vetsi jako 127. Znaky nad touto hodnotou jsou automaticky brany jako "?". Pro cteni obsahu pouzivam:File.ReadAllText(openFileDialog1.FileName); Zkousel jsem nastavit i druhy parametr, coz je kodovani, ale nemohlo to ... jen se to chova jinak, ale ne spravne ... Poradi nekdo?// Vyřešeno tazatelem - Zamčeno

Odpovědi na otázku

 |   |  Microsoft Windows 8 Chrome 26.0.1410.64

Zřejmě je to v UTF-8 kódování.

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 Firefox 19.0  |  [94.112.142.---]

C# neznám, ale nejou tam funkce pro bínární práci se soubory? To, co používáš, je očividně pro textové soubory. Pak bys nemusel řešit kódování, to ani u binárního souboru nemá smysl.Neco tam je, mrkni do Helpu nebo Googlu:https://www.google.com/search

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 Chrome 26.0.1410.64  |  [89.102.231.---]

Pouzij metodu File.ReadAllBytes. Binarni soubory nelze cist znak po znaku ale byte po bytu.

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 Chrome 26.0.1410.64

Problém je v tom že binární soubor čteš jako textový soubor.Použij funkci ReadAllBytes, která to opravdu přečte binárně a obsah souboru vrátí jako pole bytů: byte[] data = File.ReadAllBytes(openFileDialog1.FileName);

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [178.72.234.---]

No ja to nakonec vyresil pres BinaryReader a funguje to taky. Je sice fakt, ze to musim cist byte po bytu, ale je to take alternativa. Kolik toho mam precist si zjistim pres FileInfo a je to ... ;)

Souhlasím  |  Nesouhlasím

Související témata: ASCII, Filename



Určitě si přečtěte