Ohjelmani lukee tiedostosta Scanner-luokan avulla muutamia sanoja ja vertaa niitä käyttäjän antamaan syötteeseen. Editorina minulla on NetBeans ja käyttiksenä Windows 7. Aluksi mitään ongelmia ei esiintynyt, kun ajoin ohjelman NetBeansin kautta. Komentoriviltä ajaessani ääkköset näkyivät väärin. Testailin sitten antaa Scannerille parametreinä eri merkistökoodauksia, kuten ISO-8859-1 ja se cp****. (En muista loppua.) Lopulta annoin parametrinä UTF-8, jolloin ohjelma näkyy oikein myös komentoriviltä ajettaessa. Nyt vain ilmestyi uusi ongelma vertailun kanssa. Käytän merkkijonojen vertailuun equals-metodia. Kuitenkin vertailessani käyttäjän syötettä ja tiedostosta luettua, vertailu ei "toimi". Eli metodi palauttaa falsen, vaikka molempien merkkijonojen pitäisi olla samat. Saisiko tuon equalsin toimimaan vai pitäisikö luoda joku erilainen vertailusysteemi? Ongelmaahan ei ole, jos ohjelman ajaa NetBeansin kautta ilman tuota merkistökoodausta.
Kaikkien syötteiden pitää tietysti käyttää samaa merkistöä, muutenhan voit vertailla luotettavasti vain ascii-merkkejä. Ellei sitten ongelma ole jopa niin alkeellinen, ettet huomioi tiedostosta tai käyttäjän syötteestä luettuja rivinvaihtoja.
Ongelman syynä ei tainutkaan olla merkistökoodaus, vaan se, että luettaessa tiedostosta sanoja ensimmäisen rivin eteen lisätään "'" merkki. Se oli sitten sekoittanut tuota vertailemista. Ongelma on vain, etten tiedä, miksi tuo heittomerkki ilmestyy rivin alkuun itsestään.
Edit: En tiedä vieläkään, mistä tuon merkin ilmestyminen johtuu, mutta kiersin sen vain lisäämällä yhden rivin tiedoston alkuun, jossa ei ole mitään ohjelmalle merkittävää sisältöä.
Szanne kirjoitti:
En tiedä vieläkään, mistä tuon merkin ilmestyminen johtuu,
Ehkä tiedostossa on BOM (byte-order-mark). Se ei kylläkään ole heittomerkki, mutta ehkä se näkyy jossain ympäristössä virheellisesti niin. Varmista tekstieditorin tallennusasetuksista, että BOM jätetään pois.
En ollut kuullutkaan ennestään tästä BOM:sta. Kiitos tiedosta! Käytän normaalisti Notepad++ ja asetuksista tarkistin, että BOM on ollut pois. Olin kuitenkin aina välillä tallentanut tiedoston perus Notepadilla, joka sitten lisäsi BOM tiedoston alkuun. Ongelmahan ei siis mitenkään liittynytkään merkistökoodauksiin, vaikka minun silmiin se vaikutti juuri siltä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.