Пытаясь отладить проблему с сохранением данных из нескольких символов в базу данных, я сузил проблему до того, как Groovy обрабатывает мои строки.У меня есть этот фрагмент кода:
println "Hi!"
def strings=[
"Dies ist eine Testlinie in deutscher Sprache.",
"C'est une ligne d'essai en français.",
"Is é seo an líne tástála i nGaeilge..",
"Esta é unha liña de proba en galego.",
"Questa è una linea di prova in italiano.",
"Dette er en test linje i norsk.",
"Þetta er próf lína í íslensku.",
"Góðan dag, hvernig ert þú að gera?",
"Ich komme aus Köln"
]
strings.each {
println it
}
Я сохранил этот фрагмент, копируя строки из моего браузера в GroovyConsole.
Если я запускаю его в командной строке Windows с помощью:
groovy testAnsi.groovy
Я получаю:
Hi!
Dies ist eine Testlinie in deutscher Sprache.
C'est une ligne d'essai en franτais.
Is Θ seo an lφne tßstßla i nGaeilge..
Esta Θ unha li±a de proba en galego.
Questa Φ una linea di prova in italiano.
Dette er en test linje i norsk.
▐etta er pr≤f lφna φ φslensku.
G≤≡an dag, hvernig ert ■· a≡ gera?
Ich komme aus K÷ln
Если я открываю файл с помощью Notepad ++, он говорит, что он написан на ANSI и показывает много нечетных символов.Если я открываю его с помощью Блокнота, он говорит, что он написан на ANSI и отображает правильные символы.
Если я затем сохраняю файл с помощью Блокнота в Юникоде (он отображается как UC2 Little Endian со всеми соответствующими символами в Блокноте ++)и запустить его в командной строке как:
groovy -c UTF-16 testUnicode.groovy
Я получаю это:
Hi!
Dies ist eine Testlinie in deutscher Sprache.
C'est une ligne d'essai en franτais.
Is Θ seo an lφne tßstßla i nGaeilge..
Esta Θ unha li±a de proba en galego.
Questa Φ una linea di prova in italiano.
Dette er en test linje i norsk.
▐etta er pr≤f lφna φ φslensku.
G≤≡an dag, hvernig ert ■· a≡ gera?
Ich komme aus K÷ln
Но когда я запускаю файл ANSI или Unicode в GroovyConsole, я получаю ожидаемыйрезультаты в панели вывода.
Теперь, если я сделаю:
more testAnsi.groovy
Я получу тот же бред, что и при запуске сценария.
Если я это сделаю:
more testUnicode.groovy
Я получаю правильные символы, за исключением исландских.
Обратите внимание, что я получаю точно такие же результаты, если я запускаю код в окне Linux, но при использовании cat дляотображать содержимое исходных файлов, я всегда получаю правильные символы.
Я в тупике.Очевидно, что я делаю что-то не так, но я не знаю, что.
Как мне заставить Groovy выводить символы, которые есть в моих строках, так же, как они у меня есть в файле?