Livelink中的德语字符
本文关键字:字符 德语 Livelink | 更新日期: 2023-09-27 18:29:51
我想从Livelink服务器中提取文件/文件夹和其他名称中包含一些德语特殊字符的项目类型。Livelink服务器具有UTF-8编码。值是测试Dokumentäüß
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)编码。有人能帮我解决这个问题吗。
提前感谢
您必须在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 的代码页
在C#string
中存储ISO-8859-1是没有意义的,因为它存储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(请参阅维基百科上的表)