在C中处理来自MySQL的utf-8数据并返回结果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在C中处理来自MySQL的utf-8数据并返回结果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1645字,纯文字阅读大概需要3分钟。
内容图文
![在C中处理来自MySQL的utf-8数据并返回结果](/upload/InfoBanner/zyjiaocheng/889/1c403e4f7d35451594d29c4b7d675b5f.jpg)
我只是想知道 – 如何以不会变形保存在utf8_unicode_ci中的数据的方式将MySQL结果以字符串(或其他类似的“字符串”数据类型)的形式获得.
在C进程之后,app应该将结果写回(到另一个表)数据库,其中参数也在utf8_unicode_ci中编码.
我在某处读到了Unicode联盟不推荐使用宽字符,但我的问题仍然是mysql_query()的第二个参数是字符串,它不够宽.
我已经尝试了一些“utf8字符串”解决方案,但没有成功.我也尝试将数据保存在公共字符串中,然后以相同的方式将其写入数据库(逐字节),但它根本无法正常工作…(请参阅下面的代码)
数据库:
save_text:text =ě????ýáíé
后处理:save_newtext:text =?????ýáíé
#include <iostream>
#include <mysql.h>
#include <string>
#define ... // server conection
using namespace std;
MYSQL *connection, mysql;
MYSQL_RES *result;
MYSQL_ROW row;
int query_state;
int main(int argc, char** argv)
{
mysql_init(&mysql);
mysql_real_connect(&mysql,CTH_SERVER,CTH_USER,CTH_PASSWORD,CTH_DB_IN,0,0,0));
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");
mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES utf8");
mysql_query(connection, "SELECT text FROM save_text WHERE id = 23");
result = mysql_store_result(connection);
if ((row = mysql_fetch_row(result)) != NULL) {
string sql;
sql = "INSERT INTO save_newtext (text) VALUES ('";
sql += row[0];
sql += "')";
mysql_query(connection, sql.c_str());
}
return 0;
}
提前致谢!!
解决方法:
mysql_options() should be called after mysql_init() and before
mysql_connect() or mysql_real_connect().
所以你的代码应该是
mysql_init(&mysql);
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");
mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES utf8");
mysql_real_connect(&mysql,CTH_SERVER,CTH_USER,CTH_PASSWORD,CTH_DB_IN,0,0,0));
内容总结
以上是互联网集市为您收集整理的在C中处理来自MySQL的utf-8数据并返回结果全部内容,希望文章能够帮你解决在C中处理来自MySQL的utf-8数据并返回结果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。