C++ C++;MySQL无法连接到日文数据库名
我有以下代码:C++ C++;MySQL无法连接到日文数据库名,c++,mysql,C++,Mysql,我有以下代码: #include <iostream> #include <mysql/mysql.h> using namespace std; #define SERVER "localhost" #define USER "root" #define PASS "password" #define DB "日本語" int main(){ MYSQL *connect; connect = mysql_init(NULL); if(!co
#include <iostream>
#include <mysql/mysql.h>
using namespace std;
#define SERVER "localhost"
#define USER "root"
#define PASS "password"
#define DB "日本語"
int main(){
MYSQL *connect;
connect = mysql_init(NULL);
if(!connect){
cerr << "Error\n";
return 1;
}
connect = mysql_real_connect(connect, SERVER, USER, PASS, DB, 0, NULL, 0);
if(!connect){
cerr << "Error\n";
return 1;
}
return 0;
}
#包括
#包括
使用名称空间std;
#定义服务器“localhost”
#定义用户“根”
#定义密码
#定义数据库“日本語"
int main(){
MYSQL*连接;
connect=mysql_init(NULL);
如果(!连接){
cerr您可能知道,但存在不同的UTF编码。我将检查以下几点:
- .cpp文件的编码
- 将DB常量打印为字节数组
- 从MySQL数据库中检索数据库的名称(只需连接并检索所有数据库名称-我想您可以这样做)
- 查看MySQL文档和数据库,了解当前使用的编码
您是否尝试传递utf-8字符串?您的意思是什么?您的意思是使用字符串数据库吗?我尝试过,但您需要调用DC.c_str(),因为mysql_real_connect需要const char*。此外,mysql数据库使用的是eucjpms模式,而不是utf-8,这可能很重要。无论您在数据库中使用哪种编码,都可以使用“定名"设置utf8编码和mysql将进行转换。但这里的问题是建立连接。尝试将servername、username和dbname中使用的宽字符串转换为utf-8。我尝试了您的建议。首先,我可以将DB名称输出到标准输出。有趣的是,我可以正确连接到mysql服务器,当我没有指定数据库名称时,但是,当我运行showtables时,我得到:information\u schema???mysql performance\u schema test