Tulipas mielenkiintoinen ongelma eteen. Tallennan python 3:lla tietoa (merkkijonoja) MongoDB-tietokantaan. Kun tulostan tiedon tietokannasta, se tulostuu väärällä merkistökoodauksella. Äät ja ööt tulostuvat näin:
Äätä ja öötä = Ãätä ja Ãötä
Alunperin tein tämän python 2.7:lla, ja sillä toimi kaikki hyvin. Python 3:lla ei toimi. Olen yrittänyt encoodata dataa, kun kirjoitan sitä tietokantaan, ja myös aika monta muuta keinoa olen kokeillut, mutta en ole löytänyt ratkaisua tähän millään.
Tässä esimerkki miten käytän tietokantaa:
from pymongo import Connection conn = Connection() db = conn.database table = db.table # Tiedon tallennus table.insert({"nimi": "Ripe"}) # Tiedon haku table.find() # tai table.find({"nimi": "Ripe"})
Miten tietokantasi on määritelty ja miten tallennat ja haet tiedon?
Tietokanta on aivan normaali MongoDB-tietokanta. En ehkä tajunnut kysymystä oikein, mutta yritän. Tiedon haen ja tallennan MongoDB:n python-"ajurilla":
Edit: muokkasin koodin ensimmäiseen viestiini
MongoDB tallentaa tiedon unicode-koodattuna.
Ajattelin jotain muuta tietokantaa ja kysyin rutiinikysymykset. ;) Testasin nyt, ja kyllä se ihan tuolla koodilla toimii (ynnä ääkköset ja print). Python 3.3.0, pymongo 2.4.2+, MongoDB 2.2.3, Arch Linux (x86-64). Ikuinen perusvinkki: kokeile päivittää ohjelmistosi. Jos se ei auta, vikaa pitää etsiä muualta koodista.
Minulta löytyy suunnilleen samat ohjelmistoversiot. Aiemmin olen tehnyt puhtaasti, alusta alkaen python 3.3:lla samanlaista koodia, silloin taisi toimia. Tämän aloitin 2.7:lla, ja siirryin 3.3:een. Ehkä se voi vaikuttaa asiaan.
Edit: Kumma juttu, toimii kun testasin uudella tiedostolla. Pitänee kirjoitella koko homma uusiksi käsin, uusiin tiedostoihin. En kyllä tajua, miten se noin menee.
EDIT: Mahtaakohan bottle.py vaikuttaa asiaan? Tuntuu, että kyllä, koska ei toimi koodin copypasteamisen uuteen tiedostoon jälkeen. Äät ja ööt näkyvät samalla tavalla kuin aloitusviestissä.
FINAL EDIT: Nyt toimii. Ongelma oli bottle.py:ssä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.