Немецкий символ в Livelink

Я хочу извлечь файл/папку и другой тип элемента, который содержит некоторые немецкие специальные символы в своем имени, с сервера Livelink. Сервер Livelink имеет кодировку UTF-8. Значение – тестовый документ äöüß

      var bytes = new List<byte>(value.Length);
        foreach (var c in value)
            bytes.Add((byte)c);
        var retValue = Encoding.UTF8.GetString(bytes.ToArray());

приведенный выше пример кода исправляет проблему кодирования s в некоторых символах, но ß отображается как ? символ в латинской (ISO 8859-2) кодировке. может ли кто-нибудь помочь мне решить проблему.

заранее спасибо


person Community    schedule 01.09.2013    source источник
comment
действительно неясно, что вы на самом деле пытаетесь сделать... и использование такого подхода почти всегда неуместно. Непонятно, какая проблема с кодировкой у вас на самом деле возникла, какие данные вы на самом деле получаете от Livelink или как вы пытаетесь их отобразить. Я настоятельно рекомендую вам не использовать код, который у вас уже есть, но мы не можем помочь вам улучшить код без дополнительного контекста.   -  person Jon Skeet    schedule 01.09.2013


Ответы (2)


Вы должны установить кодировку UTF-8 в сеансе LL:

LLSTATUS llSessionStatus = LL_SessionAllocEx( &llSession, server, port,  "",  login, password, NULL);
LLSTATUS status = LL_SetCodePage( llSession , LL_TRUE, LL_TRUE, (LLLONG) 65001 );

65001 - это кодовая страница для UTF-8.

person MaxEMunich    schedule 23.03.2018

Нет смысла хранить ISO-8859-1 в C# string, так как он хранит символы Unicode.

Что действительно имеет смысл, так это преобразовать Unicode string в byte[], представляющий строку в ISO-8859-1.

var test ="äöüßÄÖÜ";
var iso = Encoding.GetEncoding("ISO-8859-1");
var bytes = iso.GetBytes(test);
File.WriteAllBytes("Sample file ISO-8859-1.txt", bytes);

Попробуйте это, и вы увидите, что текстовый файл закодирован правильно.

Вы даже можете проверить с помощью шестнадцатеричного редактора или отладчика, что ß правильно закодирован как 0xDF (см. таблицу в Википедии)

person Benoit Blanchon    schedule 01.09.2013