1

我想从 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)编码中的字符。谁能帮我解决这个问题。

提前致谢

4

2 回答 2

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 的代码页

于 2018-03-23T08:53:44.067 回答
-1

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

真正有意义的是将 Unicodestring转换为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(参见wikipedia 上的表格

于 2013-09-01T09:40:18.033 回答