1

我计划使用 C/C++ servlets/handlers 为 G-Wan web/app 服务器编写一个 web 应用程序。我希望我的应用程序可以使用多种语言,包括多字节字符,因此我想知道我应该如何在 G-WAN servlet 中处理这个问题。

xbuf_t 结构似乎是 char* 作为其用于构建 HTTP 响应的底层存储缓冲区;并且由于 char 是单字节,我想知道它将如何影响带有 unicode 或多字节字符的文本。我有点不愿意添加像 IBM Unicode Library [ICU] 之类的重型 unicode 库。

有人可以解释一下其他人是如何处理这种情况的吗?如果需要,有哪些选项可用于处理 unicode,最好是尽可能少地依赖依赖项?

4

1 回答 1

1

服务器响应(reply在 servlet 示例中调用)可以包含二进制数据,因此这当然是可能的。有一些示例可以动态发送图片(GIF、PNG、JSON 等),因此您可以发送的回复内容没有限制。

如果没有 UNICODE,您正在使用xbuf_xcat()which 就像sprintf()动态增长的缓冲区(服务器reply)一样。

您应该做的只是构建您的 UNICODE 回复(使用您最喜欢的 UNICODE 库 - ANSI C,几乎所有语言都有一个),然后将其复制到reply缓冲区中xbuf_ncat();

当然,您也可以xbuf_ncat();对您构建的每条数据即时使用,而不是为 servlet 末尾的所有大缓冲区使用。你的选择。

请注意,使用UTF-8 可能(这取决于您的应用程序)是一个更好的选择,UNICODE因为您的大部分文本可能都可以使用xbuf_xcat()(这比缓冲区副本快)。

您只需要调用xbuf_ncat();非 ASCII 字符。

可以修改这些xbuf_xxx()函数以支持 UTF-8/UNICODE(例如,带有一个标志来告诉您使用哪种编码),但这将在以后进行。

于 2012-11-17T17:55:42.657 回答