Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python 3 merkistöongelmia

Ripe [20.02.2013 19:43:29]

#

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"})

Metabolix [20.02.2013 20:03:17]

#

Miten tietokantasi on määritelty ja miten tallennat ja haet tiedon?

Ripe [20.02.2013 20:21:50]

#

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.

Metabolix [20.02.2013 21:12:19]

#

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.

Ripe [20.02.2013 21:38:32]

#

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ä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta