2015-11-02 60 views
0

我使用Interop.Domino.dll与Lotus Notes 8.5以下的C#.NET代码: 我创造了Lotus Notes客户端的新文件夹。文件夹名称有一些unicode字符。如果尝试我设置我得到错误的名称无法创建文件名为.nsf文件夹Unicode字符

""Notes error: Name too long (DifferentlanguagesÜðĂþÖÖ~VV¶ñí暎šäâΤø˙Ÿœ€…„∏ĆıœšŽÞÚ)"

的Lotus Notes中的文件夹名称限制为64个字符,但该字符串有54个字符

这里是我的代码

NotesSeesion LotusNotesSession=new NoteSession(); 
LotusNotesSession.Initialize(null); 
NotesDatabase Database=LotusNotesSession.GetDatabase("",FilePath,false); 
Database.EnableFolder("DifferentlanguagesÜðĂþÖÖ~VV¶ñí暎šäâΤø˙Ÿœ€…„∏ĆıœšŽÞ); 

//Exception "Notes error: Name too long (DifferentlanguagesÜðĂþÖÖ~VV¶ñí暎šäâΤø˙Ÿœ€…„∏ĆıœšŽÞÚ)"

回答

3

Lotus Notes的文件夹名称限制可能是64 字节并且文件夹名称以UTF-8编码,这会导致您的字符串为89个字节。

经常发生这种情况时,程序员并不真正重视他们正在做或文档化的东西。我的猜测是,这限制早在Lotus Notes中的Unicode支持,回来的时候东西在里面举行真正的单字节代码页进行解释,但最终还是UTF-8被用来在这一点上,这减少了可用的字符数引入Unicode支持以某种不可预测的方式。

+0

你在你的有关文档经常忽略字节字符之间的差别主要结论正确,但Lotus Notes中实际上没有存储UTF-8 - 或Unicode的任何其他形式。在采用Unicode之前开始开发Lotus Notes,并且他们坚持使用称为LMBCS的内容作为它们的内部字符集。各种API可以从Uniode和其他平台字符集中进行自动裁剪,所以你不会注意到它 - 直到出现问题。 –

+0

LMBCS文档现在很难找到。 (说实话,从来都不容易找到。)几年前,我创建了一个参考数据库,列出所有Unicode字符的LMBCS值,并将其发布到OpenNTF站点上。 chttp://openntf.org/Projects/codebin/codebin.nsf/CodeByDate/CE6B55B6B4A04A6E862576E10008B911 –

+0

该链接不起作用...应该是chttp://openntf.org/Projects/codebin/codebin.nsf/CodeSearch/CE6B55B6B4A04A6E862576E10008B911 –

相关问题