【问题标题】:Delphi XE2 Indy IRC UnicodeDelphi XE2 Indy IRC Unicode
【发布时间】:2013-06-22 22:52:19
【问题描述】:

是否有可能获得 unicode 支持?现在在 IdIRC1PrivateMessage 我有“?”感谢您的帮助。

procedure TForm1.IdIRC1PrivateMessage(ASender : TIdContext;
const ANicknameFrom, AHost, ANicknameTo, AMessage : unicodestring);

begin
  Memo1.Lines.Add(TimeToStr(Time) + ': ' + ANicknameFrom + ':  ' + AMessage);
end;

印地版:10.5.8.0。当我将在 mIRC 中发送消息时,例如“żźć”,我将收到“???”在德尔福中

【问题讨论】:

  • IRC 是一个过时的协议,它也不知道语言、字符集和 unicode。 en.wikipedia.org/wiki/IRC#Character_encoding你能用 XMPP 或其他现代协议代替吗?
  • “现在在 IdIRC1PrivateMessage 我有'?'”你是什么意思?哦,顺便说一句,“unicode”是什么意思?有六种 Unicode 格式。指定 Indy 版本也是一件好事。有时它会成为重要的信息。并且可能会获得新的 Indy 版本:indyproject.org/Sockets/Download/Files/Indy10.EN.aspx
  • 印地版:10.5.8.0。当我将在 mIRC 中发送消息时,例如“żźć”,我将收到“???”在德尔福中
  • 根据indyproject.org/docsite/html/!!MEMBEROVERVIEW_TIdIRC.html 判断,您对 Indy 几乎没有不足,除非他们在 XE2 发布后对其进行了更改。好吧,他们将不得不改变这一点,因为它使用字符串作为二进制数据是违反 XE4 准则的。现在你可以尝试使用 pre-Unicode Delphi 或基于 UTF-8 的 CodeTyphon/Lazarus 或修复 Indy 的源代码以添加字符集支持。也许将 IRC 生成到具有非默认代码页的单独线程中会有所帮助,但更可能会使 Delphi RTL 在单个应用程序中拥有多个代码页。
  • mIRC 是否配置为使用 UTF8?将其配置为使用与您的 Windows 相同的字符集...synapse.ararat.cz/doku.php/public:howto:d2009 的最后一段是关于 Indy 现在遇到的类似问题。我想您应该修复 Indy IRC 上的所有代码,以将 XE2 转换的 UTF-16 字符串修复为 IRC 的 8 字节字符串并返回。或更改库。 VisualIRC 项目有源代码,但它们是为预 unicode Delphi 发布的,可能对您没有什么帮助。或不。不管怎样,IRC 已经过时了,你可以选择更好的聊天选项。像 IntranetChat 翻拍或 XMPP

标签: delphi delphi-xe2 indy irc codepages


【解决方案1】:

IRC 协议本身不提供任何 Unicode 规定。 mIRC 在适用的情况下使用 UTF-8 实现 Unicode(请参阅 this article)。

TIdIRC 本身不支持 Unicode。但是,您可以手动告诉TIdIRC 使用UTF-8 编码/解码数据,方法是在连接后将TIdIOHandler.DefStringEncoding 属性设置为IndyUTF8Encoding,或者将全局IdGlobal.GIdDefaultTextEncoding 变量设置为encUTF8(设置为encASCII 默认)。我不保证它在所有情况下都能正常工作(尤其是在 CTC/DCC 操作期间)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 2014-09-22
    • 1970-01-01
    • 2014-11-22
    • 2020-04-19
    相关资源
    最近更新 更多