Невозможно преобразовать строку из 'UTF-8' в собственную кодировку

При попытке сравнить мой проект в eclipse (Team- > Compare) появляется следующее сообщение об ошибке:

(Невозможно преобразовать строку из "UTF-8" в собственную кодировку)

***
diff --old /Users/admin/Documents/workspace_branch_2.8/Test --new https://192.168.1.202/svn/main_repository/tenios/Voxtelo/bundle/trunk/Server/Test
    Invalid argument
svn: Kann Zeichenkette nicht von »UTF-8« in die eigene Codierung konvertieren:
svn: 
Eigenschafts?\195?\164nderungen: /Users/admin/Documents/workspace_branch_2.8/Test/src/main/java/org/test/test/internal/commands/Command.java

ZM-Schicht Anforderung gescheitert
svn: Fehler beim Lesen der Antwort auf die REPORT Anfrage von Festplatte
***

Однако, если я запустил команду:

svn diff --old /Users/admin/Documents/workspace_branch_2.8/Test --new https://192.168.1.202/svn/main_repository/tenios/Voxtelo/bundle/trunk/Server/Test

используя командную строку на mac os, diff работает без проблем. Из того, что я прочитал, такие ошибки обычно возникают, когда клиент получил строку в UTF-8 из репозитория, но не все символы этой строки могут отображаться в кодировке текущей локали. Результатом "locale" является:

LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL=

Кажется, что eclipse не использует эти настройки, есть ли другой способ настроить настройки локали в eclipse? Я не уверен, но, возможно, проблема связана с javaHL, есть ли там файл трассировки?

Ответ 1

JavaHL является только оболочкой для SVN. Как я вижу, JavaHL вызывает команду svn (svn diff...) и анализирует возвращенное сообщение. Команда, которую вы пытаетесь выполнить, возвращает информацию, которая в этом diff изменила какое-либо свойство (в немецком Eigenschaftsänderung). К сожалению, терминал, который обрабатывал вызов, испортил кодировку. Результатом является запрос "RA layer request failed" (ZM-Schicht Anforderung gescheitert), который просто означает, что JavaHL не смог проанализировать возвращенное сообщение.

Что вы можете попробовать:

  • запустите eclipse с помощью LC_MESSAGES="en_US.UTF-8" /path/to/eclipse/eclipse и, возможно, JavaHL вызовет исполняемый файл svn с английскими сообщениями

  • проверьте терминал, с которого вы запускаете Eclipse. Поддерживает ли он unicode? (rxvt не делает, где urxvt)

    введите ä в свой терминал и проверьте вывод. Вы должны видеть ä как читаемый символ. Как вы можете видеть из моего вывода, символ должен быть закодирован как \303\244, а не \195\164 (303 - восьмеричное представление для 195 десятичных чисел и 244 (окт.) == 164 (dec))

    $ ä
    bash: $'\303\244': command not found
    

Надеюсь, что это поможет.