我有以下代碼: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(!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;
}
的mysql_real_connect導致該錯誤消息是顯示器。問題是數據庫是日文的。如果我用英文連接到數據庫,我可以很好地連接。
我也嘗試將DB =「」,然後指定表爲db.table(即日本語。単語),但我試圖從表中讀取時收到分段錯誤。
任何幫助將不勝感激。
你嘗試過傳遞一個utf-8字符串嗎? –
你是什麼意思?你的意思是喜歡用字符串DB嗎?我嘗試過,但你需要調用DC.c_str(),因爲mysql_real_connect需要const char *。此外,MySQL數據庫使用eucjpms模式而不是utf-8,這可能很重要。 – user2534517
無論您在數據庫中使用哪種編碼,都可以使用「SET NAMES」來設置utf8編碼,而mysql將進行翻譯。但在這裏,問題是建立一個連接。嘗試將servername,username和dbname中使用的寬字符串轉換爲utf-8。 –