2 votes

Puis-je convertir ma base de données/script en UTF-8 ?

Comment puis-je convertir une base de données pour qu'elle supporte UTF-8 et convertir ses anciennes données, quel que soit leur encodage, en UTF-8 ?

Informations supplémentaires : J'exploite un serveur sur lequel se trouvent de nombreux sites web, et l'un d'entre eux exécute WHMCS (php script pour gérer les clients d'hébergement). WHMCS a une application iPhone où je peux le parcourir à travers l'iPhone, le problème est que cette application ne fonctionnera que si tout dans mon site web est en encodage UTF-8.

J'utilisais Windows-1256 comme encodage dans les paramètres de mon script, et j'ai essayé de le changer à un moment donné en UTF-8 pendant un certain temps, puis de le changer à nouveau en Windows-1256.

Ainsi, les données dans la base de données sont parfois insérées en utilisant les normes UTF et la plupart d'entre elles sont Windows-1256.

Si quelqu'un peut m'éclairer, dois-je convertir toutes les bases de données du serveur ou seulement une ? Que dois-je changer ?

Si je devais le faire manuellement, je le ferais, mais j'ai besoin de l'avis d'un expert.

2voto

Wayne Points 1668

L'encodage de la base de données est normalement défini lorsque vous créez la base de données (certainement pour Postgres). Une façon de résoudre ce problème est d'exporter, de créer une nouvelle base de données, puis de réimporter. Ce lien peut suffire .

Cependant, l'encodage de l'application peut être différent de celui de la base de données. Cela signifie que l'application envoie UTF-8 et que lorsqu'elle lit la base de données, elle convertit l'encodage de la base en UTF-8. Cela se fait normalement lors de la connexion à la base de données ( voir cette fonction PHP ).

Donc, si vous avez accès au code source (ce qui devrait être le cas), trouvez l'endroit où l'application établit la connexion et définissez l'encodage en fonction du code de base de votre BD. Ensuite, trouvez l'endroit où l'application ou Apache définit l'encodage de sortie et définissez-le sur UTF-8. Cela devrait faire l'affaire.

0voto

RichVel Points 3524

Desde WHMCS est une application commerciale, vous devriez contacter le fournisseur pour obtenir de l'aide sur la façon de convertir le contenu de la base de données de l'encodage existant à UTF-8 - en particulier parce que toutes les applications ne fonctionnent pas bien avec les données UTF-8 (le tri/collation et la recherche sont souvent affectés). MySQL et CentOS peuvent nécessiter une certaine configuration, tandis que PHP ne le fera probablement pas puisqu'il ne prend pas directement en charge UTF-8, bien que les applications PHP puissent utiliser UTF-8.

La conversion d'une application existante en UTF-8 n'est pas un exercice trivial, même si cela devrait être possible avec un certain soutien.

Il existe peut-être une solution plus simple, comme l'écriture d'un filtre à utiliser uniquement lorsque l'iPhone utilise la page. Si vous pouvez garantir qu'il n'y a pas de caractères à 8 bits dans l'interface utilisateur de l'application ou dans la base de données (c'est-à-dire uniquement ASCII), vous pouvez peut-être simplement définir l'encodage en UTF-8 à la sortie, mais cela peut être risqué.

0voto

Kim Yun Hee Points 1

Créez un fichier de base de données et convertissez-le en UTF-8 à l'aide de la commande suivante :

iconv -f Windows-1251 -t UTF-8 $votrefilename.icv > $file

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X