OSDN Git Service

bug fixes(2)
authorShyouzou Sugitani <shy@users.sourceforge.jp>
Sat, 17 Aug 2013 15:17:48 +0000 (00:17 +0900)
committerShyouzou Sugitani <shy@users.sourceforge.jp>
Sat, 17 Aug 2013 15:17:48 +0000 (00:17 +0900)
ChangeLog
lib/ninix/dll/satori.py

index e142a9e..7866810 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,5 @@
 Sat August 17 2013   Shyouzou Sugitani <shy@users.sourceforge.jp>
+       * satori.pyでセーブデータの文字コード変換が間違っていたのを修正した.
        * Python3.3でkawari8.pyがSAORI互換モジュールをアンロードする際に
          エラーで落ちるのを修正した.
        * メニューのサイドバー画像が無い場合にエラーで落ちるのを修正した.
index 0083ef3..84fc843 100644 (file)
@@ -934,6 +934,8 @@ class Satori:
         except IOError:
             database = []
         for name, value in database:
+            if name.startswith('b\'') or name.startswith('b"'):
+                continue # XXX: 文字コード変換に問題のあったバージョン対策
             self.assign(name, value)
 
     def save_database(self):
@@ -944,61 +946,61 @@ class Satori:
             encrypted = 0
             self.dbpath = os.path.join(self.satori_dir, self.DBNAME)
         try:
-            with open(self.dbpath, 'w') as f:
+            with open(self.dbpath, 'wb') as f:
                 for name, value in self.variable.items():
                     if name in ['前回終了時サーフェス0',
                                 '前回終了時サーフェス1',
                                 'デフォルトサーフェス0',
                                 'デフォルトサーフェス1']:
                         continue
-                    line = '{0}\t{1}'.format(name.encode('CP932'),
-                                             value.encode('CP932'))
+                    line = '{0}\t{1}'.format(name, value)
+                    line = line.encode('CP932')
                     if encrypted:
                         line = ''.join(encrypt(encrypt(line)))
                     f.write(line)
-                    f.write('\r\n')
+                    f.write(b'\r\n')
                 for side in [0, 1]:
                     name = 'デフォルトサーフェス{0:d}'.format(side)
                     value = self.to_zenkaku('{0:d}'.format(self.default_surface[side]))
-                    line = '{0}\t{1}'.format(name.encode('CP932'),
-                                             value.encode('CP932'))
+                    line = '{0}\t{1}'.format(name, value)
+                    line = line.encode('CP932')
                     if encrypted:
                         line = ''.join(encrypt(encrypt(line)))
                     f.write(line)
-                    f.write('\r\n')
+                    f.write(b'\r\n')
                 for side in [0, 1]:
                     name = '前回終了時サーフェス{0:d}'.format(side)
                     value = self.to_zenkaku('{0:d}'.format(self.current_surface[side]))
-                    line = '{0}\t{1}'.format(name.encode('CP932'),
-                                             value.encode('CP932'))
+                    line = '{0}\t{1}'.format(name, value)
+                    line = line.encode('CP932')
                     if encrypted:
                         line = ''.join(encrypt(encrypt(line)))
                     f.write(line)
-                    f.write('\r\n')
+                    f.write(b'\r\n')
                 name = '起動回数'
                 value = self.to_zenkaku('{0:d}'.format(self.runcount))
-                line = '{0}\t{1}'.format(name.encode('CP932'),
-                                         value.encode('CP932'))
+                line = '{0}\t{1}'.format(name, value)
+                line = line.encode('CP932')
                 if encrypted:
                     line = ''.join(encrypt(encrypt(line)))
                 f.write(line)
-                f.write('\r\n')
+                f.write(b'\r\n')
                 for name in self.timer:
                     value = self.to_zenkaku(self.timer[name])
-                    line = '{0}\t{1}'.format(name.encode('CP932'),
-                                             value.encode('CP932'))
+                    line = '{0}\t{1}'.format(name, value)
+                    line = line.encode('CP932')
                     if encrypted:
                         line = ''.join(encrypt(encrypt(line)))
                     f.write(line)
-                    f.write('\r\n')
+                    f.write(b'\r\n')
                 for name in self.reserved_talk:
                     value = self.to_zenkaku(self.reserved_talk[name])
-                    line = '{0}\t{1}'.format(''.join(('次から', value, '回目のトーク')).encode('CP932'),
-                                             name.encode('CP932'))
+                    line = '{0}\t{1}'.format(''.join(('次から', value, '回目のトーク')), name)
+                    line = line.encode('CP932')
                     if encrypted:
                         line = ''.join(encrypt(encrypt(line)))
                     f.write(line)
-                    f.write('\r\n')
+                    f.write(b'\r\n')
         except IOError:
             logging.debug('satori.py: cannot write {0}'.format(self.dbpath))
             return