【发布时间】:2016-06-27 05:23:57
【问题描述】:
我有一个 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 locale是LANG=en_US.UTF-8。
【问题讨论】:
-
字符可以随时更改,是否正确发送到数据库,数据库是否正确写入,读取时读取是否正确?看看stackoverflow.com/questions/279170/utf-8-all-the-way-through。
-
@chris85 您应该将其添加为答案。它可以在任何地方改变。
-
@chris85,我看到在 HTML 中使用 PDO 查询正确显示的字符。它也正确显示在
mysql> select * from <table>;中,所以我认为它在表格中写得很好,为UTF-8。问题似乎在于 MySQL++ 查询或 C/C++ 输出命令。