-1

「João」のようなアクセント付きのエントリを持つテーブルを持つ MySQL データベースがあります。

エントリは C/C++ コードの MySQL++ クエリで選択されますが、特にこのエントリは "Jo�o" ( printffprintfまたはstd::cout <<) として出力されます。

私が理解したいのは、データ フローのどこでこの文字が正しくエンコードされていないかということです。

もう少しコンテキスト: フロントエンドは HTML/PHP であり、PDO を使用して MySQL データベースにデータを挿入します。

HTML の PDO クエリで文字が正しく表示されます。また、次のように正しく表示されます。

mysql> select * from <table>;

そのため、表にうまく書かれていると思います。この問題は、MySQL++ クエリまたは C/C++ 出力コマンドのいずれかにあるようです。

関係あるかわかりませんが、MySQL のテーブルエンコーディングはutf8_general_ciで、シェルロケールはLANG=en_US.UTF-8.

4

1 に答える 1

0

この投稿から答えを得ました: http://forums.mysql.com/read.php?167,243667,243695#msg-243695

問題は MySQL++ にあります。接続を作成したら、次を実行する必要があります。

mysqlpp::Query query = connection->query("SET NAMES 'utf8'");
query.execute();
于 2016-03-12T20:46:52.697 に答える