2010-08-07 5 views
2

dans ma demande, je vous envoie des données de mon application à la base de données je reçois des personnages étranges dans ma base de données comme celui-cicomment gérer les données unicode dans Delphi7

alt text http://i31.tinypic.com/2637l9f.jpg

J'envoie mes données comme ce

var 
w:widestring; 
u:utf8string; 
begin 
    w:=data //data is function to get some info(string) 
    u:=utf8encode(w); 
    sendfn(u); 
end; 

J'utilise utf8_decode (mon obtenir des données) dans mon code php avant d'ajouter à ma base de données.

et ma base de données et le classement des tables est utf8_general_ci

quelqu'un peut me aider dans ce numéro

+1

A quoi ressemble réellement sendfn()? en entrée, ou est-ce une instance AnsiString ou UnicodeString ré? –

+0

Comment vous connectez-vous à MySQL? BDE, ADO, dbExpress ou autre? –

+0

sendfunction prend la valeur en tant que chaîne utf8 simplement sendfn (x; y; u: utf8string); où xand y ou d'autres données j'ai envoyé, en fait j'ai envoyé des données à ma page Web www.mysite.com/index.php?action=add, j'espère que je suis clair, si j'ai raté quelque chose s'il vous plaît laissez-moi savoir salutations – steve0

Répondre

0

C'est une supposition, mais ne la fonction de données renvoie une chaîne UTF-8 au lieu d'un WideString? Je pense que l'erreur pourrait être dans cette fonction de données que vous appelez, qui retourne les données dans le mauvais format de chaîne.

+0

fonction ne renvoie aucune chaîne, il est utilisé écrire des données. Voir 3e commentaire dans le premier message – steve0

0

La fonction php utf8_decode convertit les caractères de utf-8 à ISO-8859-1. Si le chemin parcouru par vos données (le navigateur ou tout autre composant utilisé pour envoyer vos données au serveur Web (demande http, votre installation php, votre page Web et votre connexion à la base de données) de votre application Delphi à votre base de données capable de supporter et configuré pour utiliser les données utf-8 vous n'avez pas besoin de la fonction utf8_decode, vous pouvez simplement insérer vos données comme il vient.

Si vous ne l'avez pas déjà configuré pour travailler avec php UTF-8, sachez qu'il est difficile et ne fonctionne jamais à 100% (pour moi au moins, il ne l'a jamais fait), alors peut-être qu'il vaudrait mieux que vous utilisiez des données dans votre encodage de langue locale