2010-08-31 3 views
2

J'ai des problèmes de codage lors de l'utilisation de json et ajax. chrome et c.-à-d. Encoder les trémas comme unicode quand jsonifying, firefox et safari retournent ces trémas d'utf-8 échappés comme ¼Ã.comment éviter les problèmes d'encodage en utilisant ajax-json et php-postrgesql

Où est le meilleur endroit pour donner le même codage? Js/php-get ou en les écrivant dans la base de données.

et je pense que le prochain problème est, quand je recharge le contenu encodé par utf-8 de la DB, et les écrire au navigateur, puis les réécrire à la DB, encore une fois via ajax-request un obtenir un vrai chaos?

puis-je éviter le chaous? puis-je gérer l'encodage de manière simple? pls. :-) aider

très important est de fournir également la sécurité

+0

Il est pas clair ce que vous faites de votre question et ce qui a mal tourné. Peut-être que quelques extraits aideraient. – Artefacto

+0

Je n'ai même pas dit que quelque chose s'était mal passé ;-). le fait est que les navigateurs jsonifient les machines qui redonnent des chaînes avec des caractères différents pour la même entrée, et la question est: comment gérer cela, les meilleures pratiques. Je pense que le code ne facilitera pas le problème, mais on pourrait s'en tenir à mon code et résoudre le problème pour mon cas particulier - la chose est que je suis à la recherche d'une solution plus réutilisable. – helle

+0

Vous pouvez définir le codage UTF-8 dans php.ini et si vous utilisez Apache2, vous pouvez utiliser la directive AddDefaultCharset avec UTF-8 comme –

Répondre

1

Vous devez définir tout en UTF-8, cela signifie:

classement de la base

Table collation

terrain collation

Votre chiffrement logiciel (exemple notepad ++).

+0

bien, merci. En fait, c'est tout sur utf-8. – helle

+0

[Collation] (http://en.wikipedia.org/wiki/Collation) n'est pas particulièrement pertinent ici, et vous ne définissez certainement pas [encryption] (http://en.wikipedia.org/wiki/Encryption) dans le bloc-notes ++. – Artefacto

0

Avait un problème similaire. Peut-être que vous êtes en train d'interpréter le codage dans le mauvais sens, sur le client. Essayez de définir l'encodage frontal avant vos requêtes.

<?php 
$connection = pg_pconnect("dbname=data"); 
pg_set_client_encoding($connection, "encoding goes here"); //check enconding aletrnatives on PostgreSQL 
$result = pg_query($connection, "SELECT whatever FROM wherever"); 
//and so on... 
?> 

Je suis un débutant, mais cela peut aider. En outre, n'affectera pas la sécurité de toute façon si vous êtes déjà protégé contre l'injection de DB.

Vive

Questions connexes