使用C#在Livelink中编码德语字符ß

3
我有一个包含德语特殊字符如äÄéöÖüß的文件夹名称。下面的截图显示了LiveLink服务器的内容。 enter image description here 我想使用C#从Livelink服务器中提取文件夹。
value是从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'。文件夹名称中的所有其他字符都能够成功解码/转换,除了ß字符。

我想知道为什么同样的代码可以处理所有其他德语特殊字符,但无法处理ß。

有谁能帮忙在C#中解决这个问题吗?

提前感谢。


value 是什么类型的数组?是 int[] value 吗?还是其他类型的数组? - Eduard Dumitru
value是一个C#字符串,它是通过LiveLink API com.opentext.api.LLValue获取的。 - user2537911
ẞ 的字节值为 223。 - user2537911
你正在使用哪个版本的Livelink或Content Server?版本9.7.1有一个可用的补丁。 - Steffen Roller
这个问题是由于Livelink服务器的编码引起的。我将编码方式更改为UTF-8,现在它可以正常工作了。 - user2537911
显示剩余4条评论
2个回答

1
请前往服务器管理面板 Livelink/livelink.exe?func=admin.sysvars 并设置字符集:UTF-8。同时将代码部分更改如下。
        byte[] bytes = Encoding.Default.GetBytes(value); 
        var retValue = Encoding.UTF8.GetString(bytes);

它运行良好。


0

你猜测的编码方式是UTF8,但事实上并不是。你需要找出这个字节流真正代表的编码方式,并使用它来替代。我们无法帮助你解决这个问题,你需要去询问发送者。


LiveLink服务器的编码是UTF-8。 - user2537911
你正在使用哪个版本的Livelink或Content Server?版本9.7.1有一个可用的补丁。 - Steffen Roller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接