我打算使用C / C ++ servlet /处理程序为G-Wan web / app服务器编写Web应用程序。我希望我的应用程序能够使用多种语言,包括多字节字符,因此我想知道如何在G-WAN servlet中处理这个问题。
xbuf_t结构似乎是char *作为构建HTTP响应的底层存储缓冲区;由于char是单个字节,我想知道它将如何影响具有unicode或多字节字符的文本。我有点不愿意添加像IBM Unicode Library [ICU]之类的重型unicode库。
有人可以解释一下其他人如何处理这种情况,如果需要,可以使用哪些选项来处理unicode,最好是尽可能少依赖?
答案 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(例如,使用一个标志来告诉使用哪种编码),但这将用于以后。