2009-11-02 6 views
0

J'ai deux programmes - Le premier étant un programme C qui écrit dans la base de données mysql. Deuxième est un programme Java qui lit les données de la base de données mysql. Le programme C lit la liste des fichiers dans un répertoire particulier et insère les noms de fichiers dans DB. Le programme Java lit ces lignes et essaie de traiter les fichiers en utilisant ces noms de fichier.mysql java versus c programme, différence de caractères stockés

Un nom de fichier particulier contient un long trait «-». Ce nom de fichier est lu à partir du DB par le programme Java. Mais quand il essaie d'ouvrir le fichier sur le système de fichiers pour cette entrée, les noms de fichiers ne correspondront pas. Lorsque je lis le nom du fichier (contenant le caractère '-') directement à partir du système de fichiers en utilisant Java, les octets du caractère '-' sont affichés en tant que [-30 -128 -109]. Alors que les octets montrés lorsque Java lit le nom de fichier depuis DB (nom de fichier transféré par le programme C), les octets pour le caractère '-' sont affichés en tant que [-61 -94 -30 -126 -84 -30 -128 -100] en Java.

Est-ce que cela a quelque chose à voir avec le jeu de caractères utilisé par le programme C pour entrer dans mysql?

S'il vous plaît aider ..

Merci,
-Keshav

Répondre

2

chaînes Java se composent de caractères Unicode, pas d'octets. Donc, le problème peut être que soit

  • La base de données a la chaîne ajoutée dans un encodage, mais pense que c'est une autre
  • L'application Java interprète la sortie de la base de données de manière incorrecte en caractères
  • L'encodage du système de fichiers n'est pas ce que l'application Java pense c'est.

Comment avez-vous entré les chaînes dans la base de données? Quelle est la définition de votre table? Quel codage de connexion utilisez-vous sur les applications client?

Normalement, il est préférable d'utiliser utf8 pour tout (encodage de connexion de définition de table &). Si vous ne le faites pas, vous finirez probablement par casser des choses.

+1

Résolu le problème en appliquant le codage de connexion à UTF8 pour toutes les connexions client entrantes au serveur Mysql. – Keshav