我有一个MySQL数据库,其中包含带重音项的表,例如“João”。
使用C / C ++代码中的MySQL ++查询选择条目,但此条目特别打印为“Jo o”(printf
,fprintf
或std::cout <<
)。
我想了解的是:数据流中的哪个字符编码不正确?
更多上下文:前端是HTML / PHP,它使用PDO将数据插入MySQL数据库。
我看到HTML中的PDO查询正确显示了该字符。它也正确显示:
mysql> select * from <table>;
所以我认为它写得很好。问题似乎与MySQL ++查询或C / C ++输出命令有关。
我不知道它是否相关,但MySQL的表编码是utf8_general_ci
,而shell语言环境是LANG=en_US.UTF-8
。
答案 0 :(得分:0)
我从这篇文章中得到了答案:http://forums.mysql.com/read.php?167,243667,243695#msg-243695
问题出在MySQL ++上。创建连接后,我们需要执行:
mysqlpp::Query query = connection->query("SET NAMES 'utf8'");
query.execute();