字符编码在哪里改变?

时间:2016-03-11 20:16:46

标签: php mysql pdo mysql++

我有一个MySQL数据库,其中包含带重音项的表,例如“João”。

使用C / C ++代码中的MySQL ++查询选择条目,但此条目特别打印为“Jo o”(printffprintfstd::cout <<)。

我想了解的是:数据流中的哪个字符编码不正确?

更多上下文:前端是HTML / PHP,它使用PDO将数据插入MySQL数据库。

我看到HTML中的PDO查询正确显示了该字符。它也正确显示:

mysql> select * from <table>;

所以我认为它写得很好。问题似乎与MySQL ++查询或C / C ++输出命令有关。

我不知道它是否相关,但MySQL的表编码是utf8_general_ci,而shell语言环境是LANG=en_US.UTF-8

1 个答案:

答案 0 :(得分:0)

我从这篇文章中得到了答案:http://forums.mysql.com/read.php?167,243667,243695#msg-243695

问题出在MySQL ++上。创建连接后,我们需要执行:

mysqlpp::Query query = connection->query("SET NAMES 'utf8'");
query.execute();