Commit | Line | Data |
---|---|---|
7b73b06f P |
1 | #!/usr/bin/python |
2 | # Outil de recodage de données PHP sérialisées (latin1→utf8) | |
3 | # (utilisé pour recoder les fichiers .dat de gallery) | |
4 | # Statut : experimental | |
5 | import sys, re | |
6 | ||
7 | PATTERN = r's:([0-9]+):"([^"]+)"' | |
8 | ||
9 | def serialized_recode(from_charset, to_charset): | |
10 | def serialized_sub(m): | |
11 | n, s = m.groups() | |
12 | if int(n) != len(s): | |
13 | print "Error: int(%s) != len(%s)" % (n, s) | |
14 | else: | |
15 | s = s.decode(from_charset).encode(to_charset) | |
16 | n = len(s) | |
17 | return 's:%s:"%s"' % (n, s) | |
18 | return serialized_sub | |
19 | ||
20 | standard_sub = serialized_recode('latin1', 'utf8') | |
21 | ||
22 | if len(sys.argv) < 2: | |
23 | s = sys.stdin.read() | |
24 | s = re.sub(PATTERN, standard_sub, s) | |
25 | sys.stdout.write(s) | |
26 | else: | |
27 | for a in sys.argv[1:]: | |
28 | f = file(a, 'r+') | |
29 | s = f.read() | |
30 | s = re.sub(PATTERN, standard_sub, s) | |
31 | f.seek(0) | |
32 | f.write(s) | |
33 | f.truncate() | |
34 | f.close() |