Czytanie i pisanie do pliku

0

Pisze prosty notatnik w wxPython. Poradziłam sobie z zapisem do pliku tak:

self.text = wx.TextCtrl(self, 1, style=wx.TE_MULTILINE)

// ...

fileToSaveAs = open(os.path.join(self.dirname, self.filename), 'w')
fileToSaveAs.write(str(self.text.GetValue().encode('utf8')))
fileToSaveAs.close()

nie moge sobie poradzic z odczytem, probowalam tak:

content = ""
fileToOpen = open(os.path.join(self.dirname, self.filename),'r')
content = str(fileToOpen.read().decode("utf8"))
self.text.SetValue(str(content).encode("utf8"))
fileToOpen.close()

ale mam bledy:

'ascii' codec can't encode characters in position 3178-3179: ordinal not in range(128)

co zrobic, bo chce otwierac pliki w roznym kodowaniu, zeby sie zawsze 'dobrze' otwieraly? z zapisem poszlo ok, (nawet z zapisem po edicie plikow ktore sie dalo otworzyc) wiec mam nadzieje, ze ktos zna sposob na otwarcie pliku ;)

0

probowlam tez:

# otworz plik do odczytu
	      fileToOpen = codecs.open(os.path.join(self.dirname, self.filename), "r", "utf-8")
	      # przeczytaj zawartosc pliku i ustaw jego zawartosc w okienku
	      content = str(fileToOpen.read())
	      self.text.SetValue(str(content).decode("utf8"))
	      # zamknij plik, juz nie bedzie potrzebny
	      fileToOpen.close()

ale daje takie bledy jak wyzej

0

Nikt nie wie?

0

Spróbuj podać w metodach decode i encode, jako drugi argument 'ignore', tzn. stg.Encode('utf8', 'ignore') etc. To pozwoli ignorować znaki, których nie można rozkodować. Swoją drogą, doczytałem się, że problem może dotyczyć tego :
http://pl.wikipedia.org/wiki/BOM_(informatyka)
Polecam także lekturę (jeśli znasz angielski):
http://stackoverflow.com/questions/5141559/unicodeencodeerror-ascii-codec-cant-encode-character-u-xef-in-position-0

Pozdrawiam, mam nadzieję, że pomogłem.

0

@up: D-Z-I-E-K-U-J-E !!!!!!!!!!!!!!! Pomogło 'ignore' ;) nie sprawdzałam innych rozwiązań, bo 'ignore' załatwiło sprawę ;) pięknie dziękuję raz jeszcze ! A co do lików, poczytam w wolnej chwili ;) DZIEKI!

1 użytkowników online, w tym zalogowanych: 0, gości: 1