libpqxx postgresql utf8字符串

时间:2015-12-02 08:26:19

标签: postgresql unicode utf-8

是否可以插入数据库表(基于postgresql)utf8(unicode)字符串?

video

我希望邮件内容例如udev。但pqxx::work tr(*_conn.get(), "notify"); std::stringstream ss; ss << "INSERT INTO tbl (msg) VALUES ('" << msg << "');"; tr.exec(ss.str()); tr.commit(); 方法等待キエオイウカクケコサシスセソタチツテア字符串,而不是exec。如何编码utf8字符串以将其传递给查询? 其他问题:如何使用char类型对wchar字符串进行编码?我假设utf8类型表示2字节符号,但utf8可能包含最多6个字节的符号。

1 个答案:

答案 0 :(得分:1)

可以将宽字符串转换为utf8,如下所示:

std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
std::string u8str = conv.to_bytes(msg);

或者这样:

std::wstring wmsg_text = L"キエオイウカクケコサシスセソタチツテア";
char buffer[100] = { 0 };
WideCharToMultiByte(CP_UTF8, 0, wmsg_text.data(), wmsg_text.size(),   buffer, sizeof(buffer)-1, NULL, NULL);

当然,从数据库中获取字符串后,必须执行:

std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
std::wstring u8str = conv.from_bytes(message);