【发布时间】:2011-09-22 03:25:33
【问题描述】:
我正在从 facebook api 获取包含数据的 XML 文件:
<?xml 版本="1.0" 编码="UTF-8"?>
<fql_query_response xmlns="api.facebook.com/1.0/"; xmlns:xsi="w3.org/2001/XMLSchema-instance";列表=“真”>
<用户>
<uid>100000022063315</uid>
<名称>0xD7 0x99 0xD7 0x95 0xD7 0x97 0xD7 0x90 0xD7 0x99 0x20 0xD7 0x95 0xD7 0x9B 0xD7 0x98 0xD7 0xA8</名称>
</用户>
</fql_query_response>
我想将 UTF-8 翻译成 wchar_t。我正在尝试使用 mbstowcs 这样做,但显然我需要知道要设置的语言环境。 facebook 有标准的语言环境吗?还是 utf8?
【问题讨论】:
-
任何以“.utf8”结尾的语言环境都可以,例如“en_US.utf8”。在你做
mbsrtowcs之前说setlocale(LC_CTYPE, "en_US.utf8");,它应该可以工作。或者使用从 UTF8 到 WCHAR_T 的 iconv。 -
我会将其设置为 wchar_t 字符串为 UTF-16(或取决于 UTF-32)
-
@Kerrek SB:这是 Linux 语言环境。在 Windows 上,If you provide a code page like UTF-7 or UTF-8,
setlocalewill fail, returningNULL -
@Martin:你无法控制
mbstowcs的结果。它只是一些实现定义的固定宽度字符串。 @MSalters。好点子。使用 iconv(从 UTF8 到 WCHAR_T),如下所示。
标签: c++ c facebook utf-8 facebook-graph-api