Livelink中的德语角色

时间:2013-09-01 09:01:09

标签: c# encoding livelink

我想从Livelink服务器中提取其名称中包含一些德语特殊字符的文件/文件夹和其他项类型。 Livelink服务器编码为UTF-8。 价值是TestDokumentäöüß

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

上面的代码示例修复了某些字符的编码问题,但ß被视为?拉丁文字符(ISO 8859-2)编码。任何人都可以帮我解决问题。

提前致谢

2 个答案:

答案 0 :(得分:0)

您必须在LL会话上设置UTF-8编码:

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

65001 - 是UTF-8的代码页

答案 1 :(得分:-1)

将ISO-8859-1存储在C#string中是没有意义的,因为它存储了Unicode字符。

真正有意义的是将Unicode string转换为代表ISO-8859-1中字符串的byte[]

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

试试这个,您会看到文本文件已正确编码。

您甚至可以使用十六进制编辑器或调试器检查ß是否正确编码为0xDF(参见table on wikipedia