如何使用G-Wan Web Server中的C / C ++ servlet /处理程序处理Unicode文本?

时间:2012-11-17 16:08:34

标签: unicode g-wan

我打算使用C / C ++ servlet /处理程序为G-Wan web / app服务器编写Web应用程序。我希望我的应用程序能够使用多种语言,包括多字节字符,因此我想知道如何在G-WAN servlet中处理这个问题。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

当然,您也可以为您构建的每个数据动态使用xbuf_ncat();,而不是在servlet末尾的所有大缓冲区中使用UTF-8。你的选择。

请注意,使用UNICODE 可能(取决于您的应用程序)是比xbuf_xcat()更好的选择,因为这样您的大多数文本都可以使用{{1 (这比缓冲区副本更快)。

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

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