mic*_*ael 2 c++ mysql linux utf-8
显示从MySQL检索到基于Linux的C++应用程序的UTF-8数据,我遇到了很大的麻烦.UTF文本显示为问号.
该应用程序使用MySQL C API.所以我在mysql_init()之前和之后通过了UTF-8选项mysql_real_connect():
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, 'utf8');
Run Code Online (Sandbox Code Playgroud)
和
mysql_options(&mysql,MYSQL_INIT_COMMAND, 'SET NAMES utf8');
Run Code Online (Sandbox Code Playgroud)
但没有运气.测试仍显示为问号.我用Perl脚本做了一些测试(我对它更熟悉;)).如果我为连接指定了UTF-8选项,则文本会正确显示:
$dbh->{'mysql_enable_utf8'} = 1;
$dbh->do('SET NAMES utf8');
Run Code Online (Sandbox Code Playgroud)
知道如何在C++应用程序中正确显示UTF-8数据吗?
这可能是一个简单的错字.你写:
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, 'utf8');
Run Code Online (Sandbox Code Playgroud)
单引号用于指定字符文字,而不是字符串.所以,改为:
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");
Run Code Online (Sandbox Code Playgroud)
另外,检查类型mysql.如果是MYSQL *,那么写:
mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "utf8");
Run Code Online (Sandbox Code Playgroud)
这同样适用于该行MYSQL_INIT_COMMAND.