Кодировка немецкого символа ß в Livelink с использованием C#

У меня есть имя папки, которое содержит немецкий специальный символ, такой как äÄéöÖüß. На следующем снимке экрана показано содержимое сервера LiveLink.

введите здесь описание изображения

Я хочу извлечь папку с сервера Livelink с помощью С#.

значение получено от LLserver.

  var bytes = new List<byte>(value.Length);           

         foreach (var c in value)
         {
             bytes.Add((byte)c);                 
         }           

        var result = Encoding.UTF8.GetString(bytes.ToArray());

Наконец, результатом будет äÄéöÖü�x .где ß рассматривается как квадратный символ 'x'. Все остальные символы, присутствующие в имени папки, декодируются успешно/правильно, кроме символа ß.

Мне просто интересно, почему тот же код работает для всех других немецких специальных символов, но не для ß.

Может ли кто-нибудь помочь решить эту проблему на С#?

Заранее спасибо.


person Community    schedule 18.09.2013    source источник
comment
Что такое LLServer? Какой тип массива value ?   -  person Eduard Dumitru    schedule 18.09.2013
comment
LLServer — это LiveLink Server, также известный как Content Server.   -  person    schedule 18.09.2013
comment
И какой тип массива value ? Это int[] value? Или что это?   -  person Eduard Dumitru    schedule 18.09.2013
comment
value — это строка C#, полученная из LiveLink API com.opentext.api.LLValue.   -  person    schedule 18.09.2013
comment
Символ «�» указывает на ошибку данных на уровне символов, в данном случае на некоторые байты, которые даже формально не соответствуют определению формата UTF-8. Можете ли вы показать, что здесь представляют собой необработанные данные в виде числовых значений байтов? (Я подозревал, что оскорбительный символ на самом деле не обычный «ß», а его редкий эквивалент в верхнем регистре «ẞ», но это не должно быть проблемой в UTF-8.)   -  person Jukka K. Korpela    schedule 18.09.2013
comment
Значение байта ẞ равно 223.   -  person    schedule 18.09.2013
comment
С какой версией Livelink или Content Server работает? Доступен патч для версии 9.7.1.   -  person Steffen Roller    schedule 19.09.2013
comment
Сервер Livelink Версия: 10.0.0 Номер обновления: 10 Номер сборки: 21   -  person    schedule 19.09.2013
comment
Эта проблема связана с кодировкой сервера Livelink. Я изменил метод кодировки на UTF-8, и он отлично работает.   -  person    schedule 22.09.2013


Ответы (2)


Зайдите в админ панель сервера Livelink/livelink.exe?func=admin.sysvars и установите кодировку: UTF-8

и изменение раздела кода следующим образом

        byte[] bytes = Encoding.Default.GetBytes(value); 
        var retValue = Encoding.UTF8.GetString(bytes);

Это работает нормально.

person Shyam sundar shah    schedule 22.09.2013

Вы догадались, что ваша кодировка UTF8, но это явно не так. Вам нужно будет выяснить, какую кодировку на самом деле представляет поток байтов, и использовать ее вместо этого. Мы не можем помочь вам с этим, вам придется спросить отправителя указанных байтов.

person nvoigt    schedule 18.09.2013
comment
Кодировка сервера LiveLink — UTF-8. - person ; 18.09.2013
comment
С какой версией Livelink или Content Server работает? Доступен патч для версии 9.7.1. - person Steffen Roller; 18.09.2013