Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;编码问题 我使用Basic X,并尝试在Windows 7上集成XML数据库和C++。我使用来自的BaseXclient API 它包含pugixml解析器并使用boost库。我让它工作,但我有问题的编码。我的数据库中的xml dokuments是utf-8,包含一些在控制台输出上没有正确显示的字母和符号(如ä和°)_C++_Xml_Boost - Fatal编程技术网

C++;编码问题 我使用Basic X,并尝试在Windows 7上集成XML数据库和C++。我使用来自的BaseXclient API 它包含pugixml解析器并使用boost库。我让它工作,但我有问题的编码。我的数据库中的xml dokuments是utf-8,包含一些在控制台输出上没有正确显示的字母和符号(如ä和°)

C++;编码问题 我使用Basic X,并尝试在Windows 7上集成XML数据库和C++。我使用来自的BaseXclient API 它包含pugixml解析器并使用boost库。我让它工作,但我有问题的编码。我的数据库中的xml dokuments是utf-8,包含一些在控制台输出上没有正确显示的字母和符号(如ä和°),c++,xml,boost,C++,Xml,Boost,我使用chcp 65001设置控制台代码页。 我用std::setlocale(LC_ALL,“”)更改了区域设置;在C++中,当我直接在程序中调用这些字母和符号而不是从数据库中显示时,它们会被正确显示。数据库输出也已更改,但仍然错误 我还使用pugi::xml\u encoding::encoding\u utf8设置了pugi解析器;但数据库输出不受影响。以下是字符串列表界面的代码示例: virtual ~my_string_list_interface() {}; my_string_l

我使用chcp 65001设置控制台代码页。 我用std::setlocale(LC_ALL,“”)更改了区域设置;在C++中,当我直接在程序中调用这些字母和符号而不是从数据库中显示时,它们会被正确显示。数据库输出也已更改,但仍然错误

我还使用pugi::xml\u encoding::encoding\u utf8设置了pugi解析器;但数据库输出不受影响。以下是字符串列表界面的代码示例:

virtual ~my_string_list_interface() {};

my_string_list_interface(const std::string& DBHOST, const std::string& DBPORT, const std::string& DBUSER,const std::string& DBPASSWD)  : base_type(DBHOST,DBPORT,DBUSER,DBPASSWD) {};
virtual my_string_list get(string query,int stage){

    my_string_list my_string_list_;
    pugi::xml_encoding::encoding_auto;
    pugi::xml_parse_result parse_;
    pugi::xml_document doc;

    string results = session().execute("XQUERY "+query);

    parse_ = doc.load(results.c_str());

    pugi::xpath_node_set is = doc.select_nodes("/record/mid");
API使用boost streambuf获取数据。boost streambuf的代码如下所示:

    std::string read_streambuffer(){return read_streambuffer(response_);};
    std::string read_streambuffer(boost::asio::streambuf & response)
    {

        std::string results;
        boost::system::error_code error;

        boost::asio::streambuf::const_buffers_type bufs = response.data();

        std::size_t size(0);
        std::string line;
        auto ptr_b = boost::asio::buffers_begin(bufs);
        for(; ptr_b != boost::asio::buffers_end(bufs); ++ptr_b, ++ size) 
        {if  (*ptr_b != 0) {line.push_back(*ptr_b);} else if (size > 1) break; };


        response.consume(size);
        return line;

    };
有没有办法指定缓冲流或字符串的编码?我使用字符串列表作为数据库输出。我应该使用wstring还是我遗漏了什么?
谢谢

至少整个
read\u streambuffer
可以(应该)感谢,但这对我来说不起作用。我找到了一个简单的解决方案,只使用了std::replace(results.begin()、results.end()、“·ä”);每一个不同的符号。这不是最好的解决方案,但它起了作用。至少整个
read\u streambuffer
可以(应该)感谢,但这对我来说不起作用。我找到了一个简单的解决方案,只使用了std::replace(results.begin()、results.end()、“·ä”);每一个不同的符号。这不是最好的解决办法,但它奏效了。