【问题标题】:Parsing different languages with ejabberd使用 ejabberd 解析不同的语言
【发布时间】:2015-08-12 02:20:34
【问题描述】:

我有一个情况。

使用 ejabberd 模块,我可以成功输入英文字符串,例如"test" 最初从 HTTP 标头中解析为 >.

但是,现在当我尝试使用不同的语言输入如印地语或希伯来语时,我的模块会失败。我不确定到底需要什么(客户端/服务器)。

某种编码 UTF-8 或 Base-64 会导致自动处理多种语言吗?

仅供参考,当我执行以下操作时:

    httpConn.setRequestProperty("GROUPNAME", "विकिपीडिया");

这里的विकिपीडिया是维基百科的印地语等价物。

我的 ejabberd 将其写入 mnesia 为:

 [224,164,181,224,164,191,224,164,149,224,164,191,224,164,170,224,165,128,224,164,161,224,164,191,224,164,175,224,164,190]

这显然是原始二进制数据(我猜)。

请提供您的意见,说明设计中在哪里以及采用哪种方法可以处理所有不同的语言字符串。

我有一个 Android 客户端,它将这个 विकिपीडिया 作为 http 标头的一部分发布到 ejabberd。 但是,它永远无法在接收端构造它。

我看到的只是一串?-标记,即

????????????????

我错过了什么?

【问题讨论】:

  • ejabberd 兼容 unicode。在 ejabberd 中没有什么特别的事情可以支持任何语言。在实践中,ejabberd 已在世界各地以任何语言(中文、俄语、日语等)成功使用

标签: android encoding erlang xmpp ejabberd


【解决方案1】:

我不知道 ejabberd 如何解析 http 标头的具体细节,但是如果您使用 unicode 模块来处理您的字符串应该没问题:

Eshell V5.10.4 (abort with ^G) 1> X = unicode:characters_to_binary("विकिपी डिया" ). <<224,164,181,224,164,191,224,164,149,224,164,191,224,164, 170,224,165,128,224,164,161,224,164,191,224,164,175,224, 164,...>> 2> io:format("~ts~n", [X]). विकिपीडिया ok

如果您想进行基于io:format 的调试,请记住将格式字符串设置为"~ts",而不是"~s"

在此处查看更多信息:http://www.erlang.org/doc/man/unicode.html

【讨论】:

    猜你喜欢
    • 2013-09-16
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多