什么 utf 格式应该提高wdirectory_iterator回报?

What utf format should boost wdirectory_iterator return?

提问人:David Sykes 提问时间:5/1/2009 最后编辑:MSaltersDavid Sykes 更新时间:5/1/2009 访问量:379

问:

如果文件包含 £(磅)符号,则directory_iterator正确返回 utf8 字符序列 \xC2\xA3

wdirectory_iterator 使用宽字符,但仍返回 UTF8 序列。这是wdirectory_iterator的正确行为,还是我错误地使用它?

AddFile(testpath, "pound£sign"); 
wdirectory_iterator iter(testpath);
TS_ASSERT_EQUALS(iter->leaf(),L"pound\xC2\xA3sign"); // Succeeds
TS_ASSERT_EQUALS(*iter, L"pound£sign"); // Fails
C++ Unicode 提升 UTF-8

评论


答:

2赞 dirkgently 5/1/2009 #1

宽字符(对象)的编码取决于实现。要使第二个语句(即 L“pound£sign”)起作用,您可能需要更改基础语言环境。默认值为“C”,它不知道井号字符。十六进制值成功,因为这不需要将字形映射到特定编码中的值。wchar_t

注意:为了简洁起见,我跳过了标准 w.r.t wchar_t、扩展字符集等的确切措辞。

评论

0赞 xtofl 5/1/2009
您指的是编译器没有正确读取宽字符字面量吗?你能告诉编译器在解析源代码时应该使用什么编码吗?
0赞 dirkgently 5/1/2009
Q1) 这是可能的。Q2) 除了语言环境外,不是以标准/可移植的方式。