Я пытаюсь найти и заменить некоторые специальные символы в файле, закодированном в ISO-8859-1, а затем записать результат в новый файл, закодированный в UTF-8:
package inv
class MigrationScript {
static main(args) {
new MigrationScript().doStuff();
}
void doStuff() {
def dumpfile = "path to input file";
def newfileP = "path to output file"
def file = new File(dumpfile)
def newfile = new File(newfileP)
def x = [
"þ":"ş",
"ý":"ı",
"Þ":"Ş",
"ð":"ğ",
"Ý":"İ",
"Ð":"Ğ"
]
def r = file.newReader("ISO-8859-1")
def w = newfile.newWriter("UTF-8")
r.eachLine{
line ->
x.each {
key, value ->
if(line.find(key)) println "found a special char!"
line = line.replaceAll(key, value);
}
w << line + System.lineSeparator();
}
w.close()
}
}
Содержимое моего входного файла:
"þ": "ý": "Þ":" "ð":" "Ý":" "Ð":"
Проблема в том, что мой код никогда не находит указанные символы. Сам файл сценария groovy закодирован в UTF-8. Я предполагаю, что это может быть причиной проблемы, но тогда я не могу закодировать его в ISO-8859-1, потому что тогда я не могу написать в нем «Ş», «Ğ» и т. д.