--- /dev/null
+#!/usr/bin/python
+# Outil de recodage de données PHP sérialisées (latin1→utf8)
+# (utilisé pour recoder les fichiers .dat de gallery)
+# Statut : experimental
+import sys, re
+
+PATTERN = r's:([0-9]+):"([^"]+)"'
+
+def serialized_recode(from_charset, to_charset):
+ def serialized_sub(m):
+ n, s = m.groups()
+ if int(n) != len(s):
+ print "Error: int(%s) != len(%s)" % (n, s)
+ else:
+ s = s.decode(from_charset).encode(to_charset)
+ n = len(s)
+ return 's:%s:"%s"' % (n, s)
+ return serialized_sub
+
+standard_sub = serialized_recode('latin1', 'utf8')
+
+if len(sys.argv) < 2:
+ s = sys.stdin.read()
+ s = re.sub(PATTERN, standard_sub, s)
+ sys.stdout.write(s)
+else:
+ for a in sys.argv[1:]:
+ f = file(a, 'r+')
+ s = f.read()
+ s = re.sub(PATTERN, standard_sub, s)
+ f.seek(0)
+ f.write(s)
+ f.truncate()
+ f.close()