0

J'ai une erreur de jeu de caractères MySQL. Je suis coréen, donc j'ai besoin de mettre le coréen dans le serveur MySQL. mais je ne peux pas. J'ai changé tout jeu de caractères, et envoyer la requête "SET NAMES UTF8MB4" mais mon programme imprimer à nouveau Même erreur.Impossible de corriger la valeur de chaîne incorrecte de MySQL (déjà modifier tous les jeux de caractères)

J'essaie de mettre « 테스트 » Et Insérer dans Au programme (Gage Langue)

FormatEx(Query, sizeof(Query), "INSERT INTO %s_bans (type, ip, name, created, ends, length, reason, aid, adminIp, sid, country) VALUES \ 
        (1, '%s', '', UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + %d, %d, '%s', (SELECT aid FROM %s_admins WHERE authid = '%s' OR authid REGEXP '^STEAM_[0-9]:%s$'), '%s', \ 
        (SELECT sid FROM %s_servers WHERE ip = '%s' AND port = '%s' LIMIT 0,1), ' ')", 
     DatabasePrefix, ip, (minutes * 60), (minutes * 60), banReason, DatabasePrefix, adminAuth, adminAuth[8], adminIp, DatabasePrefix, ServerIp, ServerPort); 

J'essaie beaucoup de recherche et de test, je ne peux pas corriger cette erreur. Merci!

OS Server: Ubuntu Server 16.04.3 64bit

MySQL Erreur:

L 09/11/2017 - 20:18:22: [sbpp_main.smx] Verify Insert Query Failed: Incorrect string value: '\xED \x85 \x8C ...' for column 'reason' at row 1 

Afficher les variables comme CHAR% '; :

+--------------------------+----------------------------+ 
| Variable_name   | Value      | 
+--------------------------+----------------------------+ 
| character_set_client  | utf8mb4     | 
| character_set_connection | utf8mb4     | 
| character_set_database | utf8      | 
| character_set_filesystem | binary      | 
| character_set_results | utf8mb4     | 
| character_set_server  | utf8mb4     | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 

show créer sb_bans de table (table cible):

| sb_bans | CREATE TABLE `sb_bans` (
    `bid` int(6) NOT NULL AUTO_INCREMENT, 
    `ip` varchar(32) DEFAULT NULL, 
    `authid` varchar(64) NOT NULL DEFAULT '', 
    `name` varchar(128) NOT NULL DEFAULT 'unnamed', 
    `created` int(11) NOT NULL DEFAULT '0', 
    `ends` int(11) NOT NULL DEFAULT '0', 
    `length` int(10) NOT NULL DEFAULT '0', 
    `reason` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 
    `aid` int(6) NOT NULL DEFAULT '0', 
    `adminIp` varchar(32) NOT NULL DEFAULT '', 
    `sid` int(6) NOT NULL DEFAULT '0', 
    `country` varchar(4) DEFAULT NULL, 
    `RemovedBy` int(8) DEFAULT NULL, 
    `RemoveType` varchar(3) DEFAULT NULL, 
    `RemovedOn` int(10) DEFAULT NULL, 
    `type` tinyint(4) NOT NULL DEFAULT '0', 
    `ureason` text, 
    PRIMARY KEY (`bid`), 
    KEY `sid` (`sid`), 
    FULLTEXT KEY `reason` (`reason`), 
    FULLTEXT KEY `authid_2` (`authid`) 
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 | 

MySQL Statut:

mysql Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper 

Connection id:   54 
Current database: 
Current user:   [email protected] 
SSL:     Not in use 
Current pager:   stdout 
Using outfile:   '' 
Using delimiter:  ; 
Server version:   5.7.19-0ubuntu0.16.04.1 (Ubuntu) 
Protocol version:  10 
Connection:    Localhost via UNIX socket 
Server characterset: utf8mb4 
Db  characterset: utf8mb4 
Client characterset: utf8mb4 
Conn. characterset: utf8mb4 
UNIX socket:   /var/run/mysqld/mysqld.sock 
Uptime:     18 min 43 sec 

Threads: 7 Questions: 1697 Slow queries: 0 Opens: 203 Flush tables: 1 Open      tables: 118 Queries per second avg: 1.511 

mysqld.cnf

[mysqld] 
character-set-client-handshake=FALSE 
init_connect="SET collation_connection = utf8mb4_general_ci" 
init_connect="SET NAMES utf8mb4" 
character-set-server = utf8mb4 
collation-server = utf8mb4_general_ci 

[client] 
default-character-set=utf8mb4 

mysql.cnf

[mysql] 
default-character-set = utf8mb4 

mysqldump.cnf

[mysqldump] 
default-character-set = utf8mb4 
+0

Alors ... quelle chaîne essayez-vous d'insérer, et comment, et dans quel encodage est-ce? – deceze

+0

@deceze J'essaie "테스트", utilisez insert into. et quel sens «dans quel encodage est-ce»? Sry My Bad English :( – Darkhost

+0

Comment vous connectez-vous à la base de données dans [tag: pawn], d'où vient la chaîne que vous essayez d'insérer, c'est beaucoup plus sur le côté pawn que sur le côté MySQL. des détails sur votre code de pion, moins de votre configuration de serveur MySQL. – deceze

Répondre

0

Pas assez d'information - "réimprimez Valeur de chaîne incorrecte"

  • 테스트 indique Mojibake
  • `` indique troncature
  • ????????? indique quelque chose autre.

Voir this pour plus de détails sur chacun.

Remarque: root (ou n'importe quel utilisateur SUPER) ne s'exécute pas init_connect. Chaque fois que vous développez une application basée sur une base de données, fournissez une connexion non root.

Dans le texte d'erreur, \xED \x85 \x8C, où les espaces sont réellement indiqués? (utf8 est l'hex ED858C.) D'où vient FormatEx? Se pourrait-il que les espaces insérés FormatEx?

+0

FormatEx est https://sm.alliedmods.net/new-api/string/FormatEx (API de cette langue), Et je ne peux que le même Erreur - L 09/11/2017 - 20:18:22: [sbpp_main.smx] Vérification de l'échec de la requête d'insertion: valeur de chaîne incorrecte: '\ xED \ x85 \ x8C ...' pour la colonne 'raison' à la ligne 1 – Darkhost

+0

_Pourquoi Quelqu'un aurait-il utiliser un langage avec des mises en garde comme "... ce contrôle de sécurité est supprimé ..." en ces jours de piratage rampant ??? _ –