проблема кодирования со специальными символами в файле свойств - PullRequest
0 голосов
/ 11 августа 2011

У меня есть скрипт сборки ant, который использует файл build.properties.Там у меня есть что-то вроде этого:

release_type=debug
version_code=1
version_name=1.0.0
logo_text=This is German: special chars like ä or ö

Моя проблема сейчас в том, что я использую logo_text для замены заполнителя в XML-файле, и в результате получается 2 из 3 сборок, таких как:

<string name="logo_text">"This is German: special chars like ää or ü."</string>

У меня есть 3 цели сборки (каждая использует свой собственный файл свойств), и всегда одни и те же 2 приводят в порядок, третья корректно заменяется.

Источник текста всегдаbuild.properties, который закодирован UTF-8, а файл сборки также использует UTF-8.Я не могу найти никакой разницы, почему у этих двух есть эта проблема.

Как заменить заполнитель текстом:

<?xml version="1.0" encoding="UTF-8"?>
<project name="branding-builds">
    <!-- code snipped -->
    <copy todir="./${short_title}">
        <fileset dir="./brandings/${short_title}">
            <exclude name="**/*.png"/>
            <exclude name="**/*.java"/>
        </fileset>
        <filterset>
            <filter token="LOGO_TEXT" value="${logo_text}" />
        </filterset>
    </copy>
    <!-- code snipped -->
</project>

Информация: переписать специальные символы, чтобы убедиться, что копирование и вставка не сделалине перепутал, не решил проблему.

1 Ответ

4 голосов
/ 11 августа 2011

Файл свойств не должен быть в кодировке UTF-8. Цитата от http://download.oracle.com/javase/6/docs/api/java/util/Properties.html:

поток ввода / вывода кодируется в кодировке символов ISO 8859-1. Символы, которые не могут быть непосредственно представлены в этой кодировке, могут быть написано с использованием Unicode Escape; разрешен только один символ 'u' в побег последовательности. Инструмент native2ascii может быть использован для преобразования файлы свойств в и из других кодировок символов.

...