是否可以插入数据库表(基于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个字节的符号。
答案 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);